关于显示对象的问题
新人表示老是遇到这个问题……用了几乎无数方法去避免还是出现惹 只有看看有没有隐藏相当神秘强大的存在能帮忙解决 具体情况如下:
输出:
ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子级。
at flash.display::DisplayObjectContainer/removeChild()
at Main/enemymove()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
事情大概是这样子:我想让一个显示对象播放完的时候删除自身 代码是这样的:
function enemymove(te:TimerEvent)
{
for (var i:uint = 0; i < enemyA.length; i++)
{
enemyA[i].y += enemyspeed;
if (enemyA[i].hitTestObject(judge))
{
player--;
players.gotoAndStop(player);
removeChild(enemyA[i]);
removeChild(judge);
removeChild(self);
enemyA.splice(i,1);
selfdie.x = self.x;
selfdie.y = self.y;
addChild(selfdie);
}
if (selfdie.currentFrame == 60)
{
removeChild(selfdie);
}
}
}
测试这个代码坑了:
if (selfdie.currentFrame == 60)
{
removeChild(selfdie);
}
如果删除了这个代码就没问题 但是selfdie实例就删不掉了 求问何解?

输出:
ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子级。
at flash.display::DisplayObjectContainer/removeChild()
at Main/enemymove()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
事情大概是这样子:我想让一个显示对象播放完的时候删除自身 代码是这样的:
function enemymove(te:TimerEvent)
{
for (var i:uint = 0; i < enemyA.length; i++)
{
enemyA[i].y += enemyspeed;
if (enemyA[i].hitTestObject(judge))
{
player--;
players.gotoAndStop(player);
removeChild(enemyA[i]);
removeChild(judge);
removeChild(self);
enemyA.splice(i,1);
selfdie.x = self.x;
selfdie.y = self.y;
addChild(selfdie);
}
if (selfdie.currentFrame == 60)
{
removeChild(selfdie);
}
}
}
测试这个代码坑了:
if (selfdie.currentFrame == 60)
{
removeChild(selfdie);
}
如果删除了这个代码就没问题 但是selfdie实例就删不掉了 求问何解?
