首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电影剪辑停止时的Flash as3事件侦听器

电影剪辑停止时的Flash as3事件侦听器
EN

Stack Overflow用户
提问于 2011-10-24 08:56:03
回答 4查看 7.3K关注 0票数 2

我正在考虑制作一个电影剪辑,它在某些点上停止(只需使用stop();在电影剪辑时间轴中的某些关键帧上),然后提示用户继续剪辑。

什么是最好的为什么要听电影剪辑的停止?我想我需要一个事件监听器来检测电影剪辑何时停止,但我不知道是否有一个。

非常感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-24 09:03:49

因为您必须通过stop()手动停止MovieClip,所以您可以使用dispatchEvent()轻松地在同一帧上手动分派您自己的事件

例如,在一个框架上,你可以有:

代码语言:javascript
复制
stop();
dispatchEvent(
    new Event("movieclip_stopped");
);

该MovieClip的监听器为:

代码语言:javascript
复制
myMovie.addEventListener("movieclip_stopped", _stopHandler);
function _stopHandler(e:Event):void
{
    trace('mc was stopped');
}
票数 6
EN

Stack Overflow用户

发布于 2011-10-24 10:12:45

有一个您可以使用的未记录的功能:addFrameScript(MovieClip的一个函数);顾名思义,它将代码添加到某个框架中。这样你就不需要框架监听器了,而且你可以动态地将代码添加到关键帧中。因此,知道电影剪辑何时结束将是;

代码语言:javascript
复制
mc.addFrameScript(mc.totalFrames - 1, onMcEnded);
function onMcEnded():void {
    trace("last frame of movieclip");
}

如果你想制作一个有特定标签的电影剪辑,然后在这些标签上操作,一种方法是这样做。(我想这对于那些不想直接在时间轴上添加代码的人来说是很常见的代码)。

假设您在时间线上添加了两个标签: askUser1和askUser2

在这些标签上添加交互的方法如下所示:

代码语言:javascript
复制
for each(var frameLabel:FrameLabel in mc.currentLabels) {
      configureLabel(frameLabel.name,frameLabel.frame-1)                
}

protected function configureLabel(labelName:String,labelFrame:int):void 
{
    switch(labelName) {                 
        case "askUser1" :
                mc.addFrameScript(labelFrame, onAskUser1);
        break;                  
        case "askUser2" :   
                mc.addFrameScript(labelFrame, onAskUser2);
        break;
    }           
}
private function onAskUser1():void{
     //do stuff for askUser1 Label
}
private function onAskUser2():void{
     //do stuff for askUser2 Label
}
票数 2
EN

Stack Overflow用户

发布于 2011-10-24 09:05:59

可怕的黑客解决方案是不断侦听onEnterFrame

代码语言:javascript
复制
var isPlaying:Boolean = false;
var lastFrame:int = 0;
addEventListener(Event.ENTER_FRAME, function(event:Event):void
{
    isPlaying = (lastFrame != currentFrame);
    lastFrame = currentFrame;
});

更好的解决方案是根据您的stop()代码实际跟踪状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7870425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档