Я сделал игру с AS3, где вы должны нажать на падающие бомбы, прежде чем они взорвутся и уничтожат стену. Теперь я пытаюсь удалить бомбы, которые упали сразу после разрушения стены, поэтому я сделал removeChild(blob)
в своей игре над функцией, так как эти бомбы добавляются на сцену с addChild(blob)
, и я продолжаю получать эту ошибку:Ошибка AS3 2025 removechild
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;
}
}
}
Я думаю, что вы к чему-то. –
Поэтому вместо этого поместите капли в массив по мере их создания, а затем пропустите этот массив, чтобы уничтожить каждый по номеру индекса вместо переменной ссылки. –