参数错误 #2025:
提供的 DisplayObject 不是调用者的子对象
在我的程序中,我有一个显示对象的结构,代表屏幕上的敌方单位,排列如下:
0: "enemy handler" ➔ [object EnemyHandler]
0: "enemy" ➔ [object Enemy1]
0: "enemy's skin"(MovieClip) ➔ [object EnemySkin1]
0: "skin image" ➔ [object Shape]
文档类包含一个EnemyHandler实例,它包含多个Enemy1、Enemy2等实例。每个实例都附加了一个皮肤 MovieClip。
当 Enemy 到达某个点时,Enemy 类(Enemy1/2/3 等继承自它)包含一个属性expired ,该属性在 Enemy 类 (enemy.update) 中设置为 true。
在敌人处理程序类中有一个函数,也是问题所在,它循环遍历所有敌人显示对象的数组,更新那里的位置,然后,
if(tempEnemy.expired)
{
tempEnemy.destroy(); // removeChild(skin)
enemyList.splice(tempEnemy);
removeChild(tempEnemy)
}
运行时,如果所有敌人都按照它们创建的顺序到达终点,则没有问题,但是如果一个例如移动得更快,并且之前到达终点,则会出现错误 #2025(提供的 DisplayObject 是不是调用者的孩子)被抛出。
我已将其范围缩小到程序试图两次移除敌人的事实,原因我无法辨别。它循环并删除所需的敌人,然后尝试再次删除它,即使它是从数组中拼接的(这发生正确,并且第一次尝试 removeChild 总是成功的)
就我而言,这可能是相当简单的事情,所以请原谅我,但感谢您提供任何帮助。这是文件;
[框架上的代码] pastebin.com/vcXzQpr9
[Enemy.as] pastebin.com/RNXgK8Ex
[EnemyHandler.as] pastebin.com/6fytxbMW
[Enemy0.as] & [Enemy1.as] pastebin.com/5bW3Aa0H
[Utils.as] pastebin.com/PQ2LPV0v
[traceDl.as] {debuggnig 显示列表} pastebin.com/9vQGKcYP