2014-01-30 131 views
0

我有各种颜色的按钮,改变点击动画片段的颜色,但我想写的代码说,像if btnRed has been clicked, apply red ColorTransform。这是因为我有多个按钮,而且我不想写出几乎与不同的RGB乘数值相同的方法。有没有这样做,这样的事件侦听每个按钮调用相同的方法,但随后该方法中它基本上是说if redBtn is clicked, change color to red的一种方式,if blueBtn is clicked, change color to blue如何检测某个特定按钮是否已被点击?

回答

0

握住你所有的按钮阵列,在CLICK事件determin这一个用buttonArray.indexOf(event.target);
按下,然后从map获得相应的颜色值,如DictionaryObject

你也可以让你的按钮在字典本身,并通过循环找到你的颜色。

+0

是否有任何可能证明有用的工作示例或代码片段?我所有的按钮都被命名为'redBtn','blueBtn','greenBtn'等。 – user3238047

2

如M4tchB0X3r所示,使用Dictionary来存储按钮对象查找颜色转换。这里是工作代码,假设你的按钮名称是btnRed,btnGreenbtnBlue,并且你在舞台上有一种名为对象box1

他们的关键点在这里是在Dictionary可以使用任意键对象引用(不仅仅是整数和字符串与简单Object型),以及一个Event对象的target属性包含对引发的事情参考事件 - 在这种情况下是一个按钮。实际上,使用currentTarget可能更安全,因为有时target是父级或子级显示对象,这是由于事件可能会在树中上下浮动。

import flash.utils.Dictionary; 
import flash.geom.ColorTransform; 

var buttonToTransform:Dictionary = new Dictionary(); 
buttonToTransform[btnRed] = new ColorTransform(1.0, 0.2, 0.2); 
buttonToTransform[btnGreen] = new ColorTransform(0.2, 1.0, 0.2); 
buttonToTransform[btnBlue] = new ColorTransform(0.2, 0.2, 1.0); 

// Note: for..in iterates over the keys of an object 
// (vs. for each, which iterates over the values) 
for(var btn:* in buttonToTransform) { 
    btn.addEventListener(MouseEvent.CLICK, onTransform); 
} 

function onTransform(e:MouseEvent):void { 
    this.box1.transform.colorTransform = buttonToTransform[e.currentTarget]; 
} 
+0

击败了我;),写下了基本上相同的东西。 – M4tchB0X3r

相关问题