我用AS3做了一个游戏,在炸弹爆炸和摧毁墙壁之前,你必须点一下落下的炸弹。现在,我试图移除墙被摧毁时掉下来的炸弹,所以我在游戏中做了一个removeChild(blob)函数,因为这些炸弹是用一个addChild(blob)添加到舞台上的,我一直收到这个错误:
ArgumentError:错误#2025年:提供的DisplayObject必须是调用方的子级。...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;
}
}
}发布于 2016-10-08 03:04:42
var名称blob一次只能引用一个特定的Blob对象。每次创建新的Blob时,都会将blob的名称重新分配到上一个创建的blob,从而失去对前一个blob的引用。
该错误表示,当您调用removeChild时,指定给" Blob“名称的特定blob不是子节点,它不在显示列表中。
因此,它引用错误的Blob或者已经从显示列表中删除了它。
为了避免错误,您也可以这样说,如果(blob.parent)删除子块
https://stackoverflow.com/questions/39927563
复制相似问题