【发布时间】:2011-05-06 12:13:52
【问题描述】:
MovieClip(mcName).play();
MovieClip(mcName).addEventListener(??????, myStopFunction);
或者你可以如何不同地了解游戏的结束?
MovieClip 是一个外部文件,根据需要加载到 swf 中。
【问题讨论】:
标签: flash actionscript-3 movieclip
MovieClip(mcName).play();
MovieClip(mcName).addEventListener(??????, myStopFunction);
或者你可以如何不同地了解游戏的结束?
MovieClip 是一个外部文件,根据需要加载到 swf 中。
【问题讨论】:
标签: flash actionscript-3 movieclip
使用所有 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
【讨论】:
当我有一个自定义动画并想知道何时完成时,我使用从动画的最后一帧调度一个自定义事件。通常一个 Event.COMPLETE 就可以了。
在 myAnimation MovieClip 的最后一帧中:
this.dispatchEvent(new Event(Event.COMPLETE));
stop();
然后在我监听的主代码中添加监听器到那个 evnet:
myAnimation.addEventListener(Event.COMPLETE, animationEndHandler);
【讨论】:
几乎像@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();
【讨论】:
对于具有多个场景的 MovieClip,仅检查 currentFrame 和 totalFrames 是不够的。您还必须检查它是否在最后一个场景。
function isAtLastFrame(mc:MovieClip):Boolean
{
return currentScene.name == mc.scenes[mc.scenes.length - 1].name && currentFrame == currentScene.numFrames;
}
【讨论】: