Director綜合技巧:Director 怎么樣檢查測試演員地載入進度
2024-09-08 19:26:56
供稿:網友
director 如何檢測演員的載入進度
原著:lingoworkshop
翻譯:alphachi
為了優化影片,我們經常需要預載演員。雖然通過使用相關的預載命令或設置演員本身的預載模式就能夠達到這一目的,但不要忘記在進行預載時反饋一些相應的動態信息,以保持與用戶之間的交互,也就是說,需要檢測并顯示演員的載入進度。
通過使用idleloadtag命令,便可以輕松做到這一點。這個命令允許通過使用一個列表來監測整個載入過程,因此我們可以在發出一個演員預載的命令之前用其來跟蹤每個演員。由于只是測算列表項目的載入進度而不是測算演員本身的載入進度,所以無論對于幾個小型演員的載入還是許多大型演員的載入,這個方法都非常有效。
首先讓我們來認識一下idleloadtag命令:
語法:
the idleloadtag
描述:
系統屬性,用于在系統等待時標記或識別加載隊列的成員數量。這個屬性為識別預加載一組成員提供了方便。此屬性可以測試和設置。
例如:
這條語句將等待加載的成員數量設置為10。
the idleloadtag = 10
下面就是一個控制載入演員列表的父代劇本實例,通過它能夠獲得演員載入的百分比。
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賦予一個進度條,即可顯示載入的百分比:
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