Цикл анимации назад AS3 - PullRequest
       4

Цикл анимации назад AS3

0 голосов
/ 29 марта 2012

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

backward_btn.addEventListener(MouseEvent.MOUSE_DOWN, setDownTrue);
backward_btn.addEventListener(MouseEvent.MOUSE_UP, setDownFalse);

addEventListener(Event.ENTER_FRAME, checkDown);

var isDown:Boolean = false;

function setDownTrue(e:MouseEvent){
    isDown = true;
}

function setDownFalse(e:MouseEvent){
    isDown = false;
}

function checkDown(e:Event){
    if(isDown == true){
        prevFrame();
        if(currentFrame == 1){
            gotoAndStop(120);  //120 is the last frame of the animation
            isDown = false;
        }
    }

}

Спасибо! * * 1004

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Событие ENTER_FRAME не является вашей проблемой, оно продолжает срабатывать.Однако isDown превращается в false в последнем кадре.Вы должны изменить isDown = false; на isDown = true; после строки gotoAndStop для непрерывного цикла.

1 голос
/ 29 марта 2012

Я на самом деле только что помог коллеге с этим:

myMovieClip //your instance on the stage

Допустим, вы хотите, чтобы ваш видеоклип воспроизводился задним ходом при нажатии:

myMovieClip.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
    addEventListener(Event.ENTER_FRAME, playBackwards);
}

function playBackwards(e:Event):void
{
    var frame:int = myMovieClip.currentFrame -1; //get frame before current;
    myMovieClip.gotoAndStop(frame); // go to that frame
    if(frame == 1) removeEventListener(Event.ENTER_FRAME, playBackwards); //if the frame is the first frame then remove the enterframe event
}
0 голосов
/ 29 марта 2012

Избавь себя от неприятностей и используй totalFrames:

if(currentFrame == 1)
    gotoAndStop(totalFrames);

else prevFrame();
...