看了这个,但是目前似乎没什么好看的,我有一个脚本,只有当帧是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);
}
}
答案 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;
}