Je crée un jeu de type pacman. J'essaie de supprimer une occurrence d'un MovieClip en utilisant removeChild(). Lorsque la "case" de l'occurrence MovieClip frappe l'occurrence MovieClip "circle" --circle sera retiré de la scène.Erreur lors de l'utilisation de removeChild (AS3)
Je reçois l'erreur suivante: ArgumentError: Erreur # 2025: Le DisplayObject fourni doit être un enfant de l'appelant. à flash.display :: DisplayObjectContainer/removeChild() à Déplacer/eatCircle()
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Move extends MovieClip {
var ScoreObjects:Array = new Array(); // creates ScoreObjects array
private var inertia:int=8; //amount of friction
var score_field:String;
//var point:MovieClip;
// Constructor--------------------------------------------------------------------
public function Move() {
init();
}
// function init -----------------------------------------------------------------
function init():void {
//stage.frameRate=60;
var score_field:String="";
ScoreObjects[0] = new Circle();
ScoreObjects[0].amount = 1; // amount of point
ScoreObjects[0].name = "circle";
stage.addEventListener(Event.ENTER_FRAME, frameloop);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownEvent);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpEvent);
box.addEventListener(Event.ENTER_FRAME, eatCircle);
wall.addEventListener(Event.ENTER_FRAME, hitWall);
stage.addChild(ScoreObjects[0]); // add Score Objects to stage ------------------------------
trace(ScoreObjects[0]);
ScoreObjects[0].x = 105;
ScoreObjects[0].y = 233;
}
// function eatCircle --------------------------------------------------------------
function eatCircle(event:Event):void {
if (box.hitTestObject(ScoreObjects[0])) {
trace ("I ate the circle");
removeChild(ScoreObjects[0]);
//calcScore();
} else {
trace ("I didn't eat the circle");
}
}
}// end of class
}// end of package
j'ai pu enlever le cercle de la scène - faire stage.addChild (ScoreObjects [0]) Mais, je ne suis pas Bien sûr, je reçois toujours une erreur dans la fenêtre de sortie. ArgumentError: Erreur # 2025: le DisplayObject fourni doit être un enfant de l'appelant. à flash.display :: DisplayObjectContainer/removeChild() à Move/eatCircle() – jc70
vient de mettre à jour le code, ce truc s'affiche, parce que vous n'avez pas arrêté votre envoi d'événement de la boîte, mais vous avez déjà supprimé l'objet de la scène , c'est pourquoi vous devez le vérifier comme dans mon cas de code ou un autre sera juste en supprimant le gestionnaire d'événements comme 'box.deleteEventListener (Event.ENTER_FRAME, eatCircle);' après avoir enlevé l'enfant. Alors c'est tout. Ne pas oublier d'accepter/noter la réponse/les commentaires. Bonne chance! – Eugene