AS3阵列限制?

时间:2014-04-02 21:06:01

标签: arrays actionscript-3

我遇到了一个奇怪的flash问题,我有一个92个按钮的数组,起初它全部包含在一个数组中,第一个20个按钮的按钮工作,其余按钮没有。< / p>

按钮将基本上将用户带到下一个场景。

所以我尝试将数组分解为多个数组,因此第一个数组包含前20个,第二个数组包含21-40个,依此类推,第五个数组包含81-92个按钮。 现在的问题是我将收到此错误消息:

TypeError #1010: A term is undefined and has no properties

它会打破所有按钮,使所有按钮无法使用。

因此,我评论了

for (var a=0; a<buttons.length; a++)
{
    firstarray[a].addEventListener(MouseEvent.CLICK,ArraySelectOne); 
    secondarray[a].addEventListener(MouseEvent.CLICK,ArraySelectOne); 
    thirdarray[a].addEventListener(MouseEvent.CLICK,ArraySelectOne); 
    fourtharray[a].addEventListener(MouseEvent.CLICK,ArraySelectOne); 
    //fiftharray[a].addEventListener(MouseEvent.CLICK,ArraySelectOne); 
}

在我的按钮spawn函数中,第一个到第四个数组的按钮完美无缺,除了第五个,点击时没有任何反应。

所以我厌倦了创建一个新的函数,它只是fiftharray中的并且在spawner中调用了新函数,同样的错误会打破一切。

然后我觉得有一个按钮命名问题,我错误输入了一些东西,我把第五个数组中的按钮名称粘贴到了fourtharray的开头,替换了其中的内容,并从我的脚本中注释了fiftharray。

曾经不可操作的按钮(81到92)工作,但现在(61到80)没有。

我尝试使用comarray组合所有数组,但只有前20个按钮有效。

所以我想知道是否有解决这个问题的修复或其他事情,非常感谢!

1 个答案:

答案 0 :(得分:0)

不需要有多个数组,删除它们。最后一个数组显然比其他数组短,并且会弄乱你的代码 - &gt;你指的是你最后一个数组中不存在的索引。

实际上不需要有阵列。你有92个按钮,这是一个很好的一堆。为什么不把它放到一个movieclip呢?阵列需要什么?

假设您选择了所有按钮并将它们放在名为 buttonsClip 的movieclip中。现在你可以使用这个代码,而无需输入所有的实例名称将它们放到数组中(就像教程那样......可能适用于8个按钮,但是92 ...来吧:)):( / p>

import flash.display.MovieClip;
import flash.events.MouseEvent;

for(var i:uint=0; i<buttonsClip.numChildren; i++) {
    var b:MovieClip = buttonsClip.getChildAt(i) as MovieClip; //Assuming the buttons are movieclips
    b.addEventListener(MouseEvent.CLICK, onClick);
}

function onClick(e:MouseEvent):void {
    trace(e.target.name);
}