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