AS3 - после нажатия кнопки оставьте ее в режиме «над» - PullRequest
0 голосов
/ 22 февраля 2012

Как бы я это сделал?

У меня есть кнопки дерева. Только один должен быть «выбран» за один раз. Они играют разные анимации.

Что мне нужно, так это установить кнопку (которая имеет разный цвет bg в зависимости от состояния «вверх», «вверх» и «вниз») в выключенное состояние.

Проще говоря; Мне нужно заморозить кнопку в выключенном состоянии, когда она нажата. И когда я нажимаю одну из других кнопок, она должна вернуться в нормальное состояние, а новая кнопка должна быть заморожена в выключенном состоянии.

Я использую Flash, AS3 ..

Спасибо! =)

Ответы [ 3 ]

2 голосов
/ 15 марта 2014

Проще говоря:

Когда вы устанавливаете upState = downState, чтобы показать, что элемент был выбран, вы потеряли возможность вернуться к исходному upState.Поэтому очень просто сохранить upState как переменную, чтобы вы всегда могли вернуться к ней.

//capture upstate as a variable

var buttonUpVar:DisplayObject = button.upState;

//button stays selected or in downState when released.

button.upState = button.downState;

//deselect button by going back to original upState

button.upState = buttonUpVar;

Готово, с минимальным кодом.

1 голос
/ 22 февраля 2012
private function onClick(event:MouseEvent):void {
    if(prevSelected) {
        //change the skin of selected 
    }
    //save the current selected button 
    //change the current selected button skin
}
1 голос
/ 22 февраля 2012

Попробуйте этот код, который я адаптировал из решения, на которое вы ссылались.

private toggledButton:SimpleButton;

private function buttonToggle(button:SimpleButton){
    var currDown:DisplayObject = button.downState;
    button.downState = button.upState;
    button.upState = currDown;
}

private function clickEvent(e:MouseEvent){
    if (toggledButton != e.target) {
        buttonToggle(e.target);
        if (toggledButton)
            buttonToggle(toggledButton);
        toggledButton = e.target;
    }
}
...