AS3按钮状态

时间:2011-02-10 20:31:58

标签: actionscript-3 button mouseevent event-listener

我的舞台上有7个按钮(buttonA,buttonB等),所有MC都是。 我想控制RollOver,RollOut&点击AS3。

起初我以为我可以告诉我的按钮听众在哪里

即。 gotoAndStop(2)是RollOver状态。 或gotoAndStop(3)是Click状态。 和gotoAndStop(1)这是RollOut状态。

但是当我“点击”然后推出时,我需要按住按钮才能“点击”直到其他按钮被“点击”。

似乎无法弄清楚这一点。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果用数字命名按钮,它会更快更有效。 button1,button2,button2 ..这将允许您编写for循环以轻松执行功能

// 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);
}

答案 1 :(得分:0)

嗯...

我会保持翻转并按下按钮元素范围内的功能,并为永久点击状态执行第二帧。

[这是快速编写的代码,但你会得到这个想法]

您似乎需要为每个按钮设置一些父“重置”功能和单独的点击处理程序。

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....