我有一个as3代码来控制mc hitTestObject
和Sprite
对象的时间,它会删除Sprite
。
我在运行时遇到错误#2025,但只有当我点击20 Sprite
中的一个时(我在开头做了20 Sprite
)。
以下是代码:
if (shooting) { // determines when the player hits the shoot button
laser.visible = true; // display the laser
for (var i=0; i<20; i++) { // do this for all of 20 enAry[num] objects
if (laser.hitTestObject(enAry[i])) {
stage.removeChild(enAry[i]); // remove the enAry[num]
pts = pts+5; // plus the player's points
}
}
} else {
laser.visible = false;
}
然后我试着找出哪个enAry [num]不能被激光击中。我在trace(i);
之前添加了removeChild
。然后我从0开始订购它的所有结果。我得到的是17
不在列表中。但列表中包含另一个数字(0到16和18到19)。
怎么会发生这种情况?我该如何解决这个问题?
以下是我尝试使用上面的代码
修复代码之前的代码// ......
// add the enAry[n]
// ......
addChild(enAry[n])
在输入框架事件中
removeChild(enAry[i])
然后我将stage.
添加到addChild
和removeChild
以将stage
设置为enAry[num]
的父级。
我通过使用跟踪进行了第二次尝试。在我订购号码后,我得到了这个:0,0,0,1,2,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
(重复0和3)。
第一次尝试时我得到了这个:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19
(17岁时空白)。