这个问题不仅与 MouseEvent.CLICK 事件类型有关,而且与 AS3 中已经存在的所有事件类型有关。我阅读了很多关于自定义事件的内容,但直到现在我都无法弄清楚如何做我想做的事情。我试着解释一下,希望你明白:
这是我的情况的说明:
for(var i:Number; i < 10; i++){
var someVar = i;
myClips[i].addEventListener(MouseEvent.CLICK, doSomething);
}
function doSomething(e:MouseEvent){ /* */ }
但我希望能够将someVar作为参数传递给doSomething。所以我尝试了这个:
for(var i:Number; i < 10; i++){
var someVar = i;
myClips[i].addEventListener(MouseEvent.CLICK, function(){
doSomething(someVar);
});
}
function doSomething(index){ trace(index); }
这种工作,但不是我所期望的。由于函数闭包,当实际触发 MouseEvent.CLICK 事件时,for循环已经结束,并且someVar保存了最后一个值,即示例中的数字9。因此,每个影片剪辑中的每次点击都会调用doSomething,并将9作为参数传递。这不是我想要的。
我认为创建自定义事件应该可以工作,但是当触发 MouseEvent.CLICK 事件并将参数传递给它时,我找不到触发自定义事件的方法。现在我不知道这是否是正确的答案。
我应该怎么做?