1

我有一个按钮列表:

同意按钮不同意按钮容器.clickButton1 容器.clickButton2

Container 是另一个影片剪辑,里面是最后两个按钮。

我怎样才能把它放在数组中并将所有相同的侦听器应用于每个侦听器?

var buttonArray:Array = new Array("agreeButton", "disagreeButton", "container.clickButton1", "container.clickButton2");
for (var i:int=0; i<buttonArray.length; i++) {
    this[buttonArray[i]].addEventListener(MouseEvent.ROLL_OVER, mouseRollOver);
    this[buttonArray[i]].addEventListener(MouseEvent.ROLL_OUT, mouseRollOut);
    this[buttonArray[i]].addEventListener(MouseEvent.CLICK, mouseClick);
}
4

2 回答 2

2

保留对按钮的引用并将它们添加到数组中。

var agreeButton:Button = new Button();
var disagreeButton:Button = new Button();

//... Code that will add the above instantiated buttons to the canvas

var buttonArray:Array = new Array(agreeButton, disagreeButton);

for (var i:int = 0; i < buttonArray.length; i++) {    
buttonArray[i].addEventListener(MouseEvent.CLICK, mouseClick);
}


private function mouseClick(event:MouseEvent):void {
    Alert.show("Boom!");
}
于 2012-04-11T15:58:05.377 回答
1

我会创建一个button由每个按钮扩展的类。在您添加的按钮类eventListeners中。

例子:

如果这有什么问题,请原谅我,我已经有一段时间没有在 AS3 中编码了。

class MyButton extends Button
{
    public function MyButton()
    {
        this.addEventListener(MouseEvent.ROLL_OVER, mouseRollOver);
        this.addEventListener(MouseEvent.ROLL_OUT, mouseRollOut);
        this.addEventListener(MouseEvent.CLICK, mouseClick);
    }
    //... Add mouseRollOver, mouseRollOut, mouseClick methods
}

您的个人按钮

class DisagreeButton extends MyButton
{
    public function DisagreeButton()
    {

    } 
}

class AgreeButton extends MyButton
{
    public function AgreeButton()
    {

    } 
}

实例化按钮后,所有事件侦听器都将应用于每个按钮。

于 2012-04-11T15:54:55.490 回答