Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays AS3-包含MovieClips的数组,indexOf_Arrays_Flash_Actionscript 3 - Fatal编程技术网

Arrays AS3-包含MovieClips的数组,indexOf

Arrays AS3-包含MovieClips的数组,indexOf,arrays,flash,actionscript-3,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对

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

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)

那么为什么每次跟踪都返回一个未定义的
?你有没有试着追踪电影唇的名字?也许你的MovieClip中有孩子在分派你的活动。尝试设置
mouseChildren=false。

使用e.currentTarget,e.target可能是某个子对象。或者像Tobias说的-将mouseChildren设置为false

这段代码对我很有用。我恭敬地得到了0,1,2。
因此,我在这里假设您“没有”给您的MovieClip按钮提供aBtn、bBtn、cBtn的实例名称
这将是未定义的。 不过,它应该抛出编译时错误。

而且请学会用打字机打你所有的VAR,这只会对你有长远的帮助

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

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


由于您没有定义,您确定btnArr是您以前创建的数组吗?

我是否可以更轻松地将整个代码发布到某个地方?按钮是我在舞台上画的符号的实例。我确实跟踪了剪辑名称,但因为我试图获取数组中对象的索引,这似乎对我帮助不大。我曾想到过一个非常棘手的解决方法,但这也不太好。如果将EventListener添加到具有其他DisplayObjects作为Child的MovieClip中,则事件将从它们而不是从符号本身发送。这个事件是“冒泡”。因此,e.target是按钮内的显示对象。这就是为什么indexOf函数返回undefined。使用e.currentTarget,如turbosqel所说。当前目标是您的按钮。将EventHandler添加到的对象。或者将按钮的mouseChildren属性设置为false。我现在已经实现了这两个建议,但恐怕还是没有乐趣。
跟踪(i)
仍然返回
未定义的
。我还有其他类似的跟踪:
trace(e)
trace(e.currentTarget)
输出:
[MouseEvent type=“mouseOut”bubbles=true cancelable=false eventPhase=2 localX=-4 localY=-14 stageX=103.45 stageY=35.95 relatedObject=null ctrlKey=false altKey=false shiftKey=false buttonDown=false delta=0]
[object MovieClip]
分别。使用curretTarget似乎已经解决了问题,我现在在跟踪中获得了正确的索引。非常感谢!现在有一个完全无关的问题要处理!我向你保证,如果今晚还没有解决,我将发布它。。。