AS3 - 包含MovieClip的数组,indexOf

时间:2011-10-25 20:46:37

标签: arrays flash actionscript-3

我有这个数组和这些事件处理程序:

var btnArr:Array = new Array(aBtn, bBtn, cBtn);
aBtn.addEventListener(MouseEvent.MOUSE_OVER, blah);
bBtn.addEventListener(MouseEvent.MOUSE_OVER, blah);
cBtn.addEventListener(MouseEvent.MOUSE_OVER, blah);

其中aBtn,bBtn和cBtn是MovieClip对象。

当我尝试在事件期间获取其中一个的索引时:

function blah(e:Event) {
     var i = btnArr.indexOf(e.target);
     trace(i)

那么为什么这个跟踪每次都会返回undefined

4 个答案:

答案 0 :(得分:1)

使用e.currentTarget,e.target可能是一些孩子。或者像托比亚斯说的那样 - 将mouseChildren设置为false

答案 1 :(得分:0)

您在哪里初始化按钮?您是否尝试跟踪MovieClip名称?也许你的MovieClip有孩子正在派遣你的活动。尝试设置mouseChildren = false.

答案 2 :(得分:0)

此代码适用于我。我恭敬地得到0,1,2 所以我在这里假设你“不”给你的MovieClip按钮提供了实例名称aBtn,bBtn,cBtn
哪个是未定义的。 虽然,它应该抛出编译时错误
并且请学习输入你所有的变量,它们只会帮助你从长远来看。

var i:int = btnArr.indexOf(e.target);

答案 3 :(得分:0)

如果找不到元素,则数组的indexOf应该返回-1。

由于您未定义,您确定btnArr是您之前创建的数组吗?