Flash ActionScript2循环

时间:2012-10-12 09:06:24

标签: flash actionscript-2

我在一个Flash文件中有180个按钮,对于所有按钮,我需要翻转和点击事件,因此我使用的代码是:

button1.onRollOver = function() { //on roll over change button color as white
  var color = new Color(button1); 
  color.setRGB("0xFFFFFF"); 
};
button1.onRollOut = function() { //on roll out reset button color to it`s default
  resetColorFunction(); 
};
button1.onPress = function() { //on click/press runs javascript function in page
  getURL("javascript:ButtonPress('button1');"); 
};

问题是我有180个按钮,所以我将这个代码复制到每个按钮,button1,button2,button3,button4 ......等,直到button180。

有没有办法通过一个简单的代码函数遍历所有按钮。

谢谢

3 个答案:

答案 0 :(得分:1)

您可以在舞台或任何容器中使用for-in循环。

for (var item in this) {
    if (this[item] instanceof Button) { //-- Use the most relevent class for abstraction
        var btn = this[item];
        trace ("Button: " + btn._name + " btn._x:" + btn._x + " a: " + btn._alpha);

        //-- add Logic for event handlers.
    }
}

答案 1 :(得分:0)

您可以将所有这些按钮添加到某种类型的集合中,然后遍历所有元素并添加事件处理程序。 像这样:

var buttons:ArrayCollection = new ArrayCollection();
var button1:Button = new Button();
var button2:Button = new Button();
// some more buttons creation ...

每次创建按钮时,只需将其添加到buttons集合。

buttons.addItem(button1);
buttons.addItem(button2);
// etc

最后,您只需遍历所有按钮并添加所需的事件处理程序。

for each (var button:Button in buttons)
{
    button.onRollOver = function() { // handle RollOver };
    button.onRollOut  = function() { // handle RollOut };
    button.onClick    = function() { // handle Click };
}

要使用数组,您可以执行以下操作:

var buttons:Array = [];
buttons.push(button1);
// add all other buttons..

for (var i:uint = 0; i < buttons.length; i++)
{
    var button:Button = Button(buttons[i]);
    button.onRollOver = function() { // handle RollOver };
    button.onRollOut  = function() { // handle RollOut };
    button.onClick    = function() { // handle Click };
}

答案 2 :(得分:0)

您可以在Actionscript 2中使用eval,以最小的努力标记所有按钮。

buttonRollOver = function() { ... };
buttonRollOut = function() { ... };
buttonPressed = function() { ... };

for (var i=1; i<181; i++)
{
   eval("button"+i).onRollOver = buttonRollOver;
   eval("button"+i).onRollOut = buttonRollOut;
   eval("button"+i).onPress = buttonPressed;
}

在那里,你拥有一切美好而快速。

相关问题