【问题标题】:AS3 Array Buttons NestedAS3 数组按钮嵌套
【发布时间】:2012-04-11 15:48:37
【问题描述】:

我有一个按钮列表:

同意按钮 不同意按钮 容器.clickButton1 container.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);
}

【问题讨论】:

    标签: arrays actionscript-3 flash-cs5


    【解决方案1】:

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

    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!");
    }
    

    【讨论】:

    • 只是一个简单的问题,“container.clickButton1”、“container.clickButton2”按钮呢?它们位于名为“容器”的影片剪辑中。如何在影片剪辑中声明变量?
    • 我也使用了 SimpleButton。
    • 按钮在哪里并不重要,只要你在代码中有对它们的引用即可。声明按钮,添加事件侦听器,然后将它们添加到容器中。知道了? :)
    【解决方案2】:

    我会创建一个由每个按钮扩展的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()
        {
    
        } 
    }
    

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

    【讨论】:

    • 你能举个例子吗?
    • @Anderson 我添加了一个粗略的例子来说明我所指的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多