我已经尝试了一切。数组非常简单,所以我不知道为什么它不起作用:
var menuList:Array = [menu_bag_mc,menu_chips_mc,menu_coke_mc,menu_cup_mc,menu_deodorant_mc,menu_fork_mc,menu_knife_mc,menu_lighter_mc,menu_milk_mc,menu_pill_mc,menu_rings_mc,menu_shampoo_mc,menu_spoon_mc,menu_straw_mc,menu_toothbrush_mc,menu_trashbag_mc,menu_water_mc];
function captureAllClicks(event:MouseEvent):void
{
trace(menuList.indexOf(event.target));
}
stage.addEventListener(MouseEvent.CLICK, captureAllClicks);
每次我点击舞台上的任何项目(都是上面列出的实例名称。每个都是一个包含按钮的补间动画片段)我得到-1的痕迹。为什么?!
EDIT2
需要做什么:
for each (var mc:MovieClip in menuList) mc.addEventListener(MouseEvent.CLICK, createContent);
//right here, i need to make a variable that I can put in the "addchild" so that
//for every one of the list items clicked, it adds a movieclip child with
//the same name (such as menu_bag_mc from above) with "_frame" appended.
var framevar:MovieClip = menuList[i] += "_frame";
function createContent(event:MouseEvent):void {
if(MovieClip(root).currentFrame == 850) {
while(MovieClip(root).numChildren > 1)
{
MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1));
}
MovieClip(root).addChild (framevar);
MovieClip(root).addChild (closeBtn);
}
else {
MovieClip(root).addChild (framevar);
MovieClip(root).addChild (closeBtn);
MovieClip(root).gotoAndPlay(806);
}
}
如果我不能做一个变量,那么整个“for each”语句就没有意义了......对于一个数组来说并不是真的有任何意义,因为我还是要创建20行代码每个单独的一个。如果你不能从中创建变量,那么拥有一个数组是什么意思?
答案 0 :(得分:1)
因为很明显event.target
似乎不在menuList
。
最可能的解释是,您的MovieClip
有孩子,被点击,因此event.target
。
您应该在所有mouseChildren
上将false
设置为MovieClip
。或者您可以在每个动画片段中注册单个处理程序:
function captureAllClicks(event:MouseEvent):void {
trace(menuList.indexOf(event.currentTarget));
}
for each (var mc:MovieClip in menuList) mc.addEventListener(MouseEvent.CLICK, captureAllClicks);
格尔茨
back2dos
答案 1 :(得分:0)
为什么不尝试event.currentTarget
而不是event.target
另外为了帮助自己排除故障,为什么不跟踪event.target并跟踪event.currentTarget。您还可以遍历数组并跟踪其中的所有对象。然后更好地了解正在发生的事情。