Почему кнопка остается выбранной?

#actionscript-3

#actionscript-3

Вопрос:

Я создаю простое меню из двух кнопок. Каждая кнопка представляет собой видеоклип с 3 метками для состояний «нет», «выбрано» и «наведено». Для smartBtn необходимо установить значение «выбрано» при вводе фрейма. При нажатии на cinemaBtn smartBtn должен перейти в состояние «нет». Но я не уверен, почему smartBtn продолжает выбираться.

 import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

var smartBtn = menu_mc.smart_mc;
var cinemaBtn = menu_mc.cinema_mc;

smartBtn.buttonMode = true;
cinemaBtn.buttonMode = true;

this.addEventListener(Event.ENTER_FRAME, EnterFrameHandler);
smartBtn.addEventListener(MouseEvent.CLICK, menuSmartClick);
cinemaBtn.addEventListener(MouseEvent.CLICK, menuCinemaClick);

function EnterFrameHandler(event:Event):void {
    smartBtn.gotoAndStop("selected");
}

function menuSmartClick(e:MouseEvent) {
    smartBtn.gotoAndStop("selected");
    smartBtn.buttonMode = false;

    cinemaBtn.gotoAndStop("none");
    cinemaBtn.buttonMode = true;
}

function menuCinemaClick(e:MouseEvent) {
    cinemaBtn.gotoAndStop("selected");
    cinemaBtn.buttonMode = false;

    smartBtn.gotoAndStop("none");
    smartBtn.buttonMode = true;
}
  

Ответ №1:

ENTER_FRAME запускается в начале каждого кадра, поэтому smartBtn будет устанавливаться в состояние «выбрано» каждый раз, даже если вы установите для него состояние «нет».

Удалите вызов EnterFrameHandler или добавьте тест, подобный этому :

 function EnterFrameHandler(event:Event):void {
        if(cinemaBtn.currentFrameLabel != "selected")
            smartBtn.gotoAndStop("selected");
    }