是否有可能在闪存中获得下一帧的标签?

时间:2012-03-09 18:00:25

标签: actionscript-3 flash

看了这个,但是目前似乎没什么好看的,我有一个脚本,只有当帧是currentFrameLabel或倒带时才会播放。

然而,为了不让一帧走得太远,我需要能够在改变之前在帧上停止它而不是改变。

或者我只是以错误的方式解决这个问题?

例如:

第10帧标签:向上 第12-36帧标签:空闲循环 第37帧标签:提起

我需要它只能从第12帧到第36帧播放,但目前它从第12-37帧播放。

var reverse:Boolean = false;
var robotlabel:String = 'Up/Down';

what.addEventListener(MouseEvent.MOUSE_OVER, botAction);
what.addEventListener(MouseEvent.MOUSE_OUT, botAction2);

function botAction(evt:MouseEvent):void{
reverse = false;
robotlabel = 'Hand up/Down';
robot.gotoAndPlay('Hand up/Down');
robot.addEventListener(Event.ENTER_FRAME,run);
}

function botAction2(evt:MouseEvent):void{
reverse = true;
robot.prevFrame();
}

function run(e:Event):void{

trace("label:" + robotlabel);
trace("current" + robot.currentFrameLabel);

if(robot.currentFrameLabel != robotlabel && robot.currentFrameLabel != null){
    trace("stoooooppppp");
    robot.stop();
}

    if(reverse == true && currentFrameLabel==robotlabel){
        robot.prevFrame();
    trace("reversing!");
    }else if(reverse == false && (currentFrameLabel==robotlabel || robot.currentFrameLabel == null)){
    robot.nextFrame();
}else{
    trace("destroy");
    reverse = false;
    robot.stop();
    robot.removeEventListener(Event.ENTER_FRAME,run);
}

}

2 个答案:

答案 0 :(得分:2)

as3中没有“nextFrameLabel”属性,但是你可以使用currentLabel property of the MovieClip获取目标动画片段中所有帧标签和数字的数组并从那里开始工作,因为你知道当前的框架。

文档中的快速示例:

import flash.display.FrameLabel;

var labels:Array = mc1.currentLabels;

for (var i:uint = 0; i < labels.length; i++)
{
    var label:FrameLabel = labels[i];
    trace("frame " + label.frame + ": " + label.name);
}

答案 1 :(得分:0)

如果这对任何其他人都有用,我通过循环每个帧然后将相应的标签存储到帧中来解决它,以便稍后检查它。

for (i = 1; i < robot.totalFrames; i++)
{

for (var n:uint = 0; n < this.robolabels.length; n++)
{

    if(this.robolabels[n].frame == i){
        newLabel = this.robolabels[n].name
    }

}

this.roboframes[i] = newLabel;
}