首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2025年AS3错误清除d

2025年AS3错误清除d
EN

Stack Overflow用户
提问于 2016-10-08 00:47:41
回答 1查看 201关注 0票数 2

我用AS3做了一个游戏,在炸弹爆炸和摧毁墙壁之前,你必须点一下落下的炸弹。现在,我试图移除墙被摧毁时掉下来的炸弹,所以我在游戏中做了一个removeChild(blob)函数,因为这些炸弹是用一个addChild(blob)添加到舞台上的,我一直收到这个错误:

ArgumentError:错误#2025年:提供的DisplayObject必须是调用方的子级。...line 80

顺便说一句,我已经尝试过这样的方法了:

代码语言:javascript
复制
this.parent.removeChild(this);

代码语言:javascript
复制
blob.parent.removeChild(blob);

代码语言:javascript
复制
stage.removeChild(blob);

但我还是会犯同样的错误。

这是我的密码:

代码语言:javascript
复制
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;
        }


    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-08 03:04:42

var名称blob一次只能引用一个特定的Blob对象。每次创建新的Blob时,都会将blob的名称重新分配到上一个创建的blob,从而失去对前一个blob的引用。

该错误表示,当您调用removeChild时,指定给" Blob“名称的特定blob不是子节点,它不在显示列表中。

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

为了避免错误,您也可以这样说,如果(blob.parent)删除子块

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39927563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档