数组将无法运行actionscript 3

时间:2010-05-25 14:29:22

标签: actionscript-3 arrays

我已经尝试了一切。数组非常简单,所以我不知道为什么它不起作用:

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行代码每个单独的一个。如果你不能从中创建变量,那么拥有一个数组是什么意思?

2 个答案:

答案 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。您还可以遍历数组并跟踪其中的所有对象。然后更好地了解正在发生的事情。