벽을 파괴하고 파괴하기 전에 떨어지는 폭탄을 클릭해야하는 AS3 게임을 만들었습니다. 이제, 벽이 파괴되었을 때 쓰러진 폭탄을 제거하려고합니다. 따라서이 폭탄이 무덤에 addChild(blob)
으로 추가 되었기 때문에 게임에서 내 게임에서 removeChild(blob)
을 수행했는데이 오류가 계속 나타납니다 :AS3 오류 2025 removechild
this.parent.removeChild(this);
또는
blob.parent.removeChild(blob);
또는
012 :ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. ...line 80
... 그리고는 그런데, 나는 이미 이런 일을 시도했습니다
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;
}
}
}
나는 당신이 뭔가있는 것 같아. –
대신에 blob을 생성 할 때 blob을 배열에 넣은 다음 해당 배열을 반복하면 변수 참조 대신 인덱스 번호로 각 배열을 삭제할 수 있습니다. –