1

ボタンのリストがあります:

同意するボタンdisagreeButtoncontainer.clickButton1container.clickButton2

コンテナは別のムービークリップであり、その中には最後の2つのボタンがあります。

どうすればそれを配列に入れて、すべて同じリスナーをそれぞれに適用できますか?

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 に答える