Проблема с вашим кодом на данный момент заключается в том, что циклы не выполняются в соответствии с частотой кадров вашего фильма, поэтому ваш код будет вызывать prevFrame()
много, много раз в одном кадре. Это может привести к бесконечным циклам, которые приведут к сбою вашей программы, и совершенно бесполезен с точки зрения анимации.
Лучший подход - слушать событие ENTER_FRAME вашего фильма и перемещать точку воспроизведения назад на один кадр каждый раз, когда событие отправляется. Добавляя и удаляя слушателя в действиях вашей кнопки, вы получите нужный эффект:
var b2:rightButton = new rightButton(); //new instance
b2.X = 550; //instances position
addChild(b2); //add instance to stage
b2.alpha = .4; // set instances alpha
b2.addEventListener(MouseEvent.ROLL_OVER, rightScroll); //mouse event for roll over
function rightScroll(event:MouseEvent):void { //the function
stage.addEventListener(Event.ENTER_FRAME,moveBackwards); //add stage listener
b2.alpha = .8; //set alpha to 80%
}
b2.addEventListener(MouseEvent.ROLL_OUT, no_rightScroll); //event for roll out
function no_rightScroll(event:MouseEvent):void { //roll- out function
stage.removeEventListener(Event.ENTER_FRAME,moveBackwards); //remove stage listener
b2.alpha = .4; //set alpha back to 40%
}
function moveBackwards(evt:Event):void {
prevFrame();
}