1

我在一个 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 个按钮,所以我将此代码复制到每个按钮、按钮 1、按钮 2、按钮 3、按钮 4 等,直到按钮 180。

有没有办法用一个简单的代码来循环所有按钮,函数。

谢谢

4

3 回答 3

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.
    }
}
于 2014-05-29T10:46:51.993 回答
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 };
}
于 2012-10-12T09:21:37.347 回答
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;
}

这一切都很好而且很快。

于 2012-10-12T15:08:29.003 回答