即使我认为我已修复它

时间:2016-07-09 12:51:41

标签: actionscript-3 flash

我有一个as3代码来控制mc hitTestObjectSprite对象的时间,它会删除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.添加到addChildremoveChild以将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岁时空白)。

0 个答案:

没有答案