Flashe AS3错误#2025

时间:2013-06-04 23:56:52

标签: flash actionscript

我试图制作一个直升机游戏,并且我的游戏中添加了一个标题屏幕,但每当我尝试删除该按钮时,按钮都没有删除 - 它给了我这个错误:

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at CopterScratch/gameStart()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at fl.controls::LabelButton/keyUpHandler()

这是我的代码:

public function gameStart(e:MouseEvent):void {
        removeChild(objTitleScreen);
        if (btnStart.enabled){
            removeChild(btnStart);
        }
        removeChild(rbNormal);
        removeChild(rbDifficult);
        tmrMoveMap.start();
        tmrGravity.start();
        addChild(objHelicopter);
    }

2 个答案:

答案 0 :(得分:1)

你可以这样做:

if (objTitleScreen.parent)
    objTitleScreen.parent.removeChild(objTitleScreen);

但理想情况下,您应该知道对象的父级,以及这是否真的有必要。

答案 1 :(得分:0)

以下一个(或几个); objTitleScreen,btnStart,rbNormal或rbDifficult ...不是定义函数“gameStart”的对象的子代。原生函数'removeChild'期待一个孩子作为一个参数,并且它正在抱怨,因为它没有得到一个。在调用“gameStart”函数的类中运行下面的代码,以查看哪些子项具有(假设每个子项都已明确命名,如果不是这样的话 - 忽略代码中的“.name”)。

for (var i:uint = 0; i < this.numChildren; i++) {
    trace('child at: ' + i + ' = ' + this.getChildAt(i).name); 
}

阅读有关AS3展示列表的this内容非常丰富的文章,您将了解如何解决问题。