Состояния кнопок AS3 - PullRequest
       23

Состояния кнопок AS3

0 голосов
/ 10 февраля 2011

У меня на сцене 7 кнопок (кнопка A, кнопка B и т. Д.), Все MC.Я хотел бы управлять RollOver, RollOut & CLick с AS3.

Сначала я подумал, что могу просто сказать своему кнопочному слушателю, куда идти

, то есть gotoAndStop (2), который находится в состоянии RollOver.или gotoAndStop (3), который является состоянием щелчка.и gotoAndStop (1), который находится в состоянии RollOut.

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

не могу понять это.Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

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

// loop through the buttons and give them mouse click listeners
for ( var i:int = 1 ; i <= 7; i++ ){
    var curButton:MovieClip = getChildByName ("button"+i);
    // set click lisitener
    curButton.addEventListener ( MouseEvent.CLICK, buttonClickHandler );
    // set rollover listener
    curButton.addEventListener ( MouseEvent.ROLLOVER, buttonRollOverHandler );
    // set rollout listener
    curButton.addEventListener ( MouseEvent.ROLLOUT, buttonRollOutHandler );

    // set initial state
    curButton.gotoAndStop(1);
}

function resetStates (){
    for ( var i = 1; i<=7; i++){
       var curButton = getChildByName("button"+i);
       curButton.gotoAndStop(1);
    }
}

function buttonRollOverHandler ( evt:MouseEvent ){
    resetStates();
    evt.target.gotoAndStop(2);
}
function buttonRollOutHandler ( evt:MouseEvent ){
    resetStates();
}
function buttonClickHandler ( evt:MouseEvent ){
    resetStates ();
    evt.target.gotoAndStop(3);
}
0 голосов
/ 10 февраля 2011

Хмм ...

Я бы удерживал опрокидывание и нажимал функциональные возможности в пределах элемента кнопки и делал кадр два для состояния постоянного нажатия.

[это быстро написанный код, но вы поймете идею]

Кажется, вам понадобится родительская функция сброса и отдельные обработчики щелчков для каждой кнопки.

buttonA.addEventListener(MouseEvent.MOUSE_DOWN, buttonADown);


function resetButtons(){
    buttonA.gotoAndStop(1);
    buttonB.gotoAndStop(1);
    buttonC.gotoAndStop(1);
    buttonD.gotoAndStop(1);
    buttonE.gotoAndStop(1);
    buttonF.gotoAndStop(1);
    buttonG.gotoAndStop(1);
}

function buttonADown(e.Mouse_Event):void{

    resetButtons(); //RESET ALL PREVIOUSLY CLICKED BUTTONS
    buttonA.gotoAndStop(2);
}

// and so  on down the line....
...