0

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

例如:3 个对象和 6 个框架。

每个对象都有一个动画帧和一个相反的动画帧。

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

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

我希望这是有道理的,并且非常感谢任何帮助。

谢谢

4

1 回答 1

0

你的问题绕了几个圈子,但我想我得到了你想要的。

您可以为此使用 framelabels,也可以使用 enterframe 来检查当前框架的当前 framelabel 是什么。或者,您可以将框架脚本添加到您想了解的框架中。

输入框:

在时间轴中为您知道的帧添加标签。也许将框架标签命名为“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 方法添加一个脚本,该脚本在感兴趣的帧上调度自定义冒泡事件,然后只侦听该事件,而不是侦听 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
    }
}
于 2010-08-19T22:17:13.730 回答