Director綜合技巧:Director 怎么樣檢查測(cè)試演員地載入進(jìn)度
2024-09-08 19:26:56
供稿:網(wǎng)友
director 如何檢測(cè)演員的載入進(jìn)度
原著:lingoworkshop
翻譯:alphachi
為了優(yōu)化影片,我們經(jīng)常需要預(yù)載演員。雖然通過(guò)使用相關(guān)的預(yù)載命令或設(shè)置演員本身的預(yù)載模式就能夠達(dá)到這一目的,但不要忘記在進(jìn)行預(yù)載時(shí)反饋一些相應(yīng)的動(dòng)態(tài)信息,以保持與用戶之間的交互,也就是說(shuō),需要檢測(cè)并顯示演員的載入進(jìn)度。
通過(guò)使用idleloadtag命令,便可以輕松做到這一點(diǎn)。這個(gè)命令允許通過(guò)使用一個(gè)列表來(lái)監(jiān)測(cè)整個(gè)載入過(guò)程,因此我們可以在發(fā)出一個(gè)演員預(yù)載的命令之前用其來(lái)跟蹤每個(gè)演員。由于只是測(cè)算列表項(xiàng)目的載入進(jìn)度而不是測(cè)算演員本身的載入進(jìn)度,所以無(wú)論對(duì)于幾個(gè)小型演員的載入還是許多大型演員的載入,這個(gè)方法都非常有效。
首先讓我們來(lái)認(rèn)識(shí)一下idleloadtag命令:
語(yǔ)法:
the idleloadtag
描述:
系統(tǒng)屬性,用于在系統(tǒng)等待時(shí)標(biāo)記或識(shí)別加載隊(duì)列的成員數(shù)量。這個(gè)屬性為識(shí)別預(yù)加載一組成員提供了方便。此屬性可以測(cè)試和設(shè)置。
例如:
這條語(yǔ)句將等待加載的成員數(shù)量設(shè)置為10。
the idleloadtag = 10
下面就是一個(gè)控制載入演員列表的父代劇本實(shí)例,通過(guò)它能夠獲得演員載入的百分比。
property mydefaultidlemode
property myloadtag
property myindexmax
property myindex
property mymemberlist
property mytimeout
on new ( me , alistofmembers)
me .minitclass()
me .minitinstance()
if alistofmembers. ilk = #list then me .mloadmembers(alistofmembers)
return me
end
on mdestroy ( me )
if mytimeout. ilk = #timeout then mytimeout. forget ()
myindex = myindexmax
cancelidleload (myloadtag)
the idleloadmode = mydefaultidlemode
end
on mloadmembers ( me , alistofmembers)
mymemberlist = alistofmembers. duplicate ()
myindexmax = mymemberlist. count
myindex = 0
mytimeout = timeout ( me . string ). new ( 0 , #nothing , me )
the idleloadmode = 3
end
on mgetpercentagedone ( me )
if myindexmax > 0 then
return ( float (myindex)/(myindexmax))* 100
else
return 100
end if
end
on exitframe ( me )
if idleloaddone (myloadtag) then
if me .mloadnextmember() = 0 then
mytimeout. target = void
mytimeout. forget ()
the idleloadmode = mydefaultidlemode
end if
end if
end
on mloadnextmember ( me )
if myindex < myindexmax then
myindex = myindex + 1
thismember = mymemberlist[myindex]
if thismember. ilk = #member then preloadmember thismember
return myindex
else
return 0
end if
end
on minitclass ( me )
mydefaultidlemode = the idleloadmode
end
on minitinstance ( me )
uniquename = string ( me ). word [ 4 ]
delete the last char of uniquename
myloadtag = symbol (uniquename)- 0
mytimeout = void
end
將下面的behavior賦予一個(gè)進(jìn)度條,即可顯示載入的百分比:
property myloader
on beginsprite ( me )
mymembers = [ member ( "blah1" , member ( "blah1" ), member ( "blah3" ))
myloader = script ( "memberloadmgr_class" ). new (mymembers)
end
on exitframe ( me )
if myloader. ilk = # instance then
amntloaded = myloader.mgetpercentagedone()
put "loading " & integer (amntloaded) & "%"
if amntloaded = 100 then
myloader.mdestroy()
myloader = void
end if
end if
end