我遇到了一个奇怪的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个按钮有效。
所以我想知道是否有解决这个问题的修复或其他事情,非常感谢!
答案 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);
}