我如何知道 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,仅检查 currentFrametotalFrames 是不够的。您还必须检查它是否在最后一个场景。

function isAtLastFrame(mc:MovieClip):Boolean

  return currentScene.name == mc.scenes[mc.scenes.length - 1].name && currentFrame == currentScene.numFrames;

【讨论】:

以上是关于我如何知道 MovieClip 何时放置在舞台上结束播放?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取动态创建的 Flash 舞台上的 MovieClip 名称?

我无法从 AS3 类文件控制舞台中的 MovieClip

如何使用 Flash JavaScript 文件 (.jsfl) 将库中的对象添加到舞台?

当添加到另一个 AS 类文件的舞台时,AS3 访问 MovieClip

离开关键帧并返回时,Flash 舞台上的 MovieClip 不会重新实例化

如何在 Adob​​e Flash CS3 中移动 MovieClip 的原点?