gotoandplay检测结束并开始播放时间轴的另一部分

时间:2010-08-19 20:30:48

标签: flash actionscript-3 actionscript timeline

我在时间轴中有一系列部分,我想使用gotoandplay。如何开始播放时间轴的另一部分。有没有办法检测gotoandplay的结束?

例如:

:3个对象和6个帧。

每个物体都有一个框架中的动画和一个反对动画框架。

在每一帧中,用户可以选择三个对象中的任何一个,但是如果一个对象已经被动画化,则必须首先播放它的第二个动画帧。

我需要检测动画输出序列的结束以开始所选对象的第一帧。

我希望这很有意义,并且非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

你的问题可以在几个圈子中进行,但我认为我得到了你想要的东西。

您可以使用framelabels和enterframe来检查当前帧的当前帧标签是什么。或者您可以在想要了解的帧中添加一个framecript。

enterFrame事件:

在时间轴中为您知道的框架添加标签。也许将框架标签命名为“roll_start”,“roll_end”等。

然后使用一个enterframe来测试你是否在你感兴趣的帧上,如下所示:

addEventListener(Event.ENTER_FRAME, enterFrameHandler);
private function enterFrameHandler(e:Event):void {
    if (currentLabel == 'roll_start') {
        // Rollover started
    } else if (currentLabel == 'roll_end') {
        // Rollover ended
    }
}

FrameScript:

使用undocumented frameScript method添加一个脚本,在感兴趣的帧上调度自定义冒泡事件,然后只是监听该事件,而不是监听enterframe并检查每一帧:

private static const TIMELINE_AT_LABEL:String = 'timelineAtLabel';
function frameScript():void {
    dispatchEvent(new Event(TIMELINE_AT_LABEL, true, true));
}

var rollStartFrame:int = 10;
var rollEndFrame:int = 20;
addFrameScript(rollStartFrame, frameScript);
addFrameScript(rollEndFrame, frameScript);

addEventListener(TIMELINE_AT_LABEL, atLabelHandler);
private function atLabelHandler(e:Event):void {
    var frame:int = e.target.currentFrame;
    if (frame == rollStartFrame) {
        // Rollover started
    } else if (frame == rollEndFrame) {
        // Rollover ended
    }
}