我如何知道 MovieClip 何时放置在舞台上结束播放?
Posted
技术标签:
【中文标题】我如何知道 MovieClip 何时放置在舞台上结束播放?【英文标题】:How do I know when MovieClip placed on stage to finish play? 【发布时间】:2011-05-06 12:13:52 【问题描述】:MovieClip(mcName).play();
MovieClip(mcName).addEventListener(??????, myStopFunction);
或者你可以如何不同地了解游戏的结束?
MovieClip 是一个外部文件,根据需要加载到 swf 中。
【问题讨论】:
【参考方案1】:使用所有 MovieClip 都具有的两个属性:
totalFrames - currentFrame
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/MovieClip.html#currentFrame
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/MovieClip.html#totalFrames
【讨论】:
你需要什么。非常感谢【参考方案2】:当我有一个自定义动画并想知道何时完成时,我使用从动画的最后一帧调度一个自定义事件。通常一个 Event.COMPLETE 就可以了。
在 myAnimation MovieClip 的最后一帧中:
this.dispatchEvent(new Event(Event.COMPLETE));
stop();
然后在我监听的主代码中添加监听器到那个 evnet:
myAnimation.addEventListener(Event.COMPLETE, animationEndHandler);
【讨论】:
【参考方案3】:几乎像@daniel.sedlacek 的回答,但没有时间线代码:
var mc : MovieClip = new $TestMovieClip();
mc.addEventListener(Event.COMPLETE, function() : void
trace("COMPLETE");
);
mc.addFrameScript(mc.totalFrames-1, function() : void
mc.dispatchEvent(new Event(Event.COMPLETE));
);
mc.play();
【讨论】:
【参考方案4】:对于具有多个场景的 MovieClip,仅检查 currentFrame
和 totalFrames
是不够的。您还必须检查它是否在最后一个场景。
function isAtLastFrame(mc:MovieClip):Boolean
return currentScene.name == mc.scenes[mc.scenes.length - 1].name && currentFrame == currentScene.numFrames;
【讨论】:
以上是关于我如何知道 MovieClip 何时放置在舞台上结束播放?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取动态创建的 Flash 舞台上的 MovieClip 名称?
如何使用 Flash JavaScript 文件 (.jsfl) 将库中的对象添加到舞台?
当添加到另一个 AS 类文件的舞台时,AS3 访问 MovieClip