这个问题不仅涉及到MouseEvent.CLICK事件类型,而是所有在AS3中已经存在的事件类型。我阅读了很多关于自定义事件的文章,但直到现在我还无法弄清楚如何做我想做的事情。我将尝试解释一下,希望你能理解:
这是我的情况的一个例子:
这种方法有所作用,但并不符合我的期望。由于函数闭包的原因,当MouseEvent.CLICK事件实际触发时,for循环已经结束,someVar保留的是最后一个值——在本例中是数字9。因此,每个电影剪辑中的点击都会调用doSomething,并将9作为参数传递。这不是我想要的结果。
我认为创建自定义事件应该可以解决问题,但是我找不到一种在MouseEvent.CLICK事件触发时触发自定义事件并将参数传递给它的方法。现在我不知道这是否是正确的答案。
我该怎么做?如何解决?
这是我的情况的一个例子:
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事件触发时触发自定义事件并将参数传递给它的方法。现在我不知道这是否是正确的答案。
我该怎么做?如何解决?