Pregunta

Estoy creando un juego de estilo Pacman. Estoy tratando de eliminar una instancia de un clip de película usando removeChild (). Cuando la instancia de "caja" MovieClip golpea el ejemplo "círculo" MovieClip --circle será retirado de la etapa.

Estoy recibiendo el siguiente error a continuación:

  

ArgumentError: Error # 2025: El DisplayObject proporcionado debe ser un niño   de la persona que llama. en flash.display :: DisplayObjectContainer / removeChild ()   en Mover / 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
¿Fue útil?

Solución

if((ScoreObjects[0] as Circle)&&((ScoreObjects[0] as Circle).parent!=null))
{
   stage.removeChild(ScoreObjects[0]);
}

Otros consejos

No tengo un compilador AS3 a mano para probar esto, pero ya que me hizo stage.addChild(ScoreObjects[0]) cree que debería hacer stage.removeChild(ScoreObjects[0])?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top