Возможно ли получить метку следующего кадра во флэш-памяти? - PullRequest
1 голос
/ 09 марта 2012

Я искал это, но на данный момент ничего не было ясно, у меня есть сценарий, который будет воспроизводиться, только если кадр является currentFrameLabel или перемоткой.

Однако, чтобы он не заходил слишком далекоЯ должен быть в состоянии остановить его на кадре до изменения, а не изменения.

Или я просто ошибаюсь?

Например:

Метка кадра 10: Up Кадр 12-36 Метка: Frame Idle Loop 37 Метка: Hand Up

Мне нужно, чтобы он воспроизводился только с 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 ]

2 голосов
/ 09 марта 2012

В as3 отсутствует свойство "nextFrameLabel" как таковое, однако вы можете получить массив всех меток и номеров кадров в целевом мувиклипе, используя свойство currentLabel в MovieClip , и обработать егооттуда, так как вы всегда знаете currentFrame.

Быстрый пример из документации:

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);
}
0 голосов
/ 11 марта 2012

В случае, если это пригодится кому-либо еще, я решил эту проблему, перебирая каждый кадр, а затем сохраняя соответствующую метку для кадра, чтобы впоследствии ее можно было проверить.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...