AS3 错误 2025 removechild

AS3 error 2025 removechild

我用 AS3 制作了一个游戏,你必须在落下的炸弹爆炸并摧毁一堵墙之前点击它。现在,我正试图移除在墙被摧毁时掉落的炸弹,所以我在我的游戏结束函数中做了一个 removeChild(blob),因为这些炸弹是用 addChild(blob) 添加到舞台上的,我不断收到此错误:

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. ...line 80

...顺便说一句,我已经尝试过这样的事情:

this.parent.removeChild(this);

blob.parent.removeChild(blob);

stage.removeChild(blob);

但我仍然得到同样的错误。

这是我的代码:

package cem {

    import flash.geom.*;
    import flash.display.*;
    import flash.events.*;
    import flash.display.MovieClip;
    import flash.utils.Timer;



    public class Jeu extends MovieClip {

        //Variables publiques
        var decor: MovieClip = new Decor();
        var chrono: cem.Chronometre;
        var nextObject: Timer = new Timer(800, 0);
        var _menu: MovieClip = new Menu();
        var _btnJouer: MovieClip = new BoutonJouer();
        var blob: cem.Blob;
        var score: Score;

        public function Jeu() {
            // constructor code

            //***********************************************Mettre menu***********************************************//
            addChild(_menu);

            addChild(_btnJouer);
            _btnJouer.x = 500;
            _btnJouer.y = 500;
            _btnJouer.addEventListener(MouseEvent.CLICK, jouer);
        }



        //*****************************************************Jouer**************************************************//
        function jouer(e: MouseEvent) {

            removeChild(_menu);

            addChild(decor);
            decor.gotoAndStop(1);

            chrono = new cem.Chronometre();
            addChild(chrono);
            chrono.demarrer();
            score = new Score();
            score.x = 600;


            nextObject.addEventListener(TimerEvent.TIMER, creerBlobs);
            nextObject.start();



        }

        //**************************************************Créer Bombes***********************************************//
        function creerBlobs(e: TimerEvent) {
            blob = new cem.Blob();
            blob.x = Math.floor(Math.random() * (stage.stageWidth - blob.width));
            addChild(blob);
            blob.gotoAndStop(1);
            blob.addEventListener("explosion", perdreVies);
        }

        //************************************************Perdre des vies*********************************************//
        public function perdreVies(e: Event) {
            decor.moinsVie();
            decor.addEventListener("gameisover", _gameOver);
        }

        //************************************************Partie terminée*********************************************//
        public function _gameOver(e: Event) {




            blob.removeEventListener("explosion", perdreVies);


            removeChild(blob);


            chrono.arret();
            addChild(_menu);
            addChild(_btnJouer);

            nextObject.stop();
            nextObject.removeEventListener(TimerEvent.TIMER, creerBlobs);
            nextObject.removeEventListener(TimerEvent.TIMER, creerBlobs);


            addChild(score);
            score.affichageScore.text = "votre score: " + chrono.secondes * 1000;
        }


    }
}

var name blob 一次只能引用一个特定的 Blob 对象。 每次您创建一个新的 Blob 时,您都会将名称 blob 重新分配给最后创建的那个,失去对前一个的引用。

该错误表明,在您调用 removeChild 时,分配给名称 "blob" 的特定 Blob 不是子对象,它不在显示列表中。

所以它引用了错误的 Blob 或者它已经从显示列表中删除了。

为避免错误,您还可以说类似 if (blob.parent) remove child blob