1

ヘリコプター ゲームを作成しようとしていて、ゲームにタイトル画面を追加しましたが、removeChild を実行しようとすると、ボタンが削除されず、次のエラーが表示されます。

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);
    }
4

2 に答える 2

1

できるよ:

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

ただし、理想的には、オブジェクトの親と、これが実際に必要かどうかを知っておく必要があります。

于 2013-06-05T03:13:10.337 に答える
0

次の 1 つ (または複数)。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 表示リストに関するこの非常に有益な記事を読むと、問題を解決する方法がわかります。

于 2013-06-05T00:24:14.573 に答える