为什么我在AS3 removeChild()上有错误?

时间:2013-11-30 20:27:07

标签: actionscript-3 flash removechild

我正在尝试为学校项目制作真正简单的游戏,而且我是ActionScript 3的新手。我刚学会了如何通过代码将对象作为子对象调用到场景中,但是我在移除它们时遇到了问题。删除实际上有效,但会出现错误,如

"ArgumentError: Error #2025:

at flash.display::DisplayObjectContainer/removeChild()

at breathe_bw_fla::MainTimeline/bulletSpeeder()"

我创建了两个子弹对象,一个朝左,另一个朝右。它们显示了枪在现场的位置。它们向左或向右移动,我想在它们离开现场后将它们移除,并且当角色第二次射击时它们将被再次调用。

function shoot(event:KeyboardEvent) {
if(event.keyCode == 32 && shootCooldown > 48 && rightOrLeftDown == true && ammo > 0) {
    ammo -= 1;
    shootCooldown = 0;
    if(rightDown == true){
        addChild(bulletGoingRight);
        bulletGoingRight.x = character.x+character.width/2;
        bulletGoingRight.y = character.y;
        stage.addEventListener(Event.ENTER_FRAME, bulletSpeeder);
    }
    if(leftDown == true){
        addChild(bulletGoingLeft);
        bulletGoingLeft.x = character.x-character.width/2;
        bulletGoingLeft.y = character.y;
        stage.addEventListener(Event.ENTER_FRAME, bulletSpeeder);
        }
    }
}

function bulletSpeeder(Event){
if(bulletGoingLeft.x > -10){
    bulletGoingLeft.x -= 10;
}
if(bulletGoingLeft.x <= -10){
    removeChild(bulletGoingLeft);
}
if(bulletGoingRight.x < 760){
    bulletGoingRight.x += 10;
}
if(bulletGoingRight.x >= 760){
    removeChild(bulletGoingRight);
}

}

1 个答案:

答案 0 :(得分:0)

有关寻找答案的人的更多信息。错误#2025是

The supplied DisplayObject must be a child of the caller.

来自http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/runtimeErrors.html

基本上你是想删除一个没有父对象的对象,或者是另一个对象的子对象。

让对象自行删除的简单方法是:

if( this.parent != null )
    this.parent.removeChild( this );

if( obj.parent != null )
    obj.parent.removeChild( obj );

如果你没有使用课程