Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash gotoandplay检测时间线的结束并开始播放时间线的另一部分_Flash_Actionscript 3_Actionscript_Timeline - Fatal编程技术网

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

Flash gotoandplay检测时间线的结束并开始播放时间线的另一部分,flash,actionscript-3,actionscript,timeline,Flash,Actionscript 3,Actionscript,Timeline,我在时间轴中有一系列部分,我想使用gotoandplay。如何开始播放时间线的另一部分。有没有办法检测gotoandplay的结束 例如:3个对象和6个帧 每个对象都有一个“动画输入”帧和一个“反向动画输出”帧 在每一帧,用户可以拾取三个对象中的任何一个,但如果对象已在中设置动画,则必须首先播放其第二个“动画输出”帧 我需要检测动画输出序列的结束,以开始选定对象的第一帧 我希望这是有意义的,并非常感谢任何帮助 谢谢你的问题绕了几个圈,但我想我得到了你想要的 您可以为此使用framelabels,

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

例如:3个对象和6个帧

每个对象都有一个“动画输入”帧和一个“反向动画输出”帧

在每一帧,用户可以拾取三个对象中的任何一个,但如果对象已在中设置动画,则必须首先播放其第二个“动画输出”帧

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

我希望这是有意义的,并非常感谢任何帮助


谢谢

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

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

EnterFrame: 将标签添加到时间轴中已知的帧。可能将框架标签命名为roll\u start、roll\u 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
    }
}
框架脚本: 使用添加在感兴趣的帧上调度自定义冒泡事件的脚本,然后只侦听该事件,而不是侦听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
    }
}