如何检测演员的载入进度
|
|
|
作者:佚名
来源:InterNet 加入时间:2005-2-7 |
为了优化影片,我们经常需要预载演员。虽然通过使用相关的预载命令或设置演员本身的预载模式就能够达到这一目的,但不要忘记在进行预载时反馈一些相应的动态信息,以保持与用户之间的交互,也就是说,需要检测并显示演员的载入进度。
通过使用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
[文章录入员:nancy] |
|
|
|
|