【发布时间】:2014-11-10 22:49:47
【问题描述】:
for (var i=0; i<=98; i++) {
box1.addEventListener(MouseEvent.CLICK, func(i));
}
function func(i:int):Function{
return function paint(e:MouseEvent):void{
var myColorTransform:ColorTransform = new ColorTransform();
if (i%4==0) {
myColorTransform.color = 0xFF0000;
}
else if (i%4==1) {
myColorTransform.color = 0x0000FF;
}
else if (i%4==2) {
myColorTransform.color = 0x00FF00;
}
else if (i%4==3) {
myColorTransform.color = 0xFFFF00;
}
box1.transform.colorTransform = myColorTransform;
}
}
我想通过事件侦听器运行一个循环,这样每当我单击对象时,它的颜色就会转换为下一个颜色。上面的代码只改变了一次颜色,并为 i (98) 的最后一个值生成了颜色,即绿色。请帮忙。我是 ActionScript 的初学者。
【问题讨论】:
-
上述代码会导致问题,因为无法删除您的事件监听器。每次
return function(e:Event){...}创建一个没有持久引用的函数的新实例时,任何对removeEventListener()的尝试都会失败
标签: actionscript-3 flash loops addeventlistener