سؤال

أقوم بإنشاء لعبة على طراز Pacman. أحاول إزالة مثيل من movieClip باستخدام removechild (). عندما يضرب مثيل MovieClip "مربع" مثيل MovieClip "الدائرة" -ستتم إزالة الدائرة من المسرح.

أتلقى الخطأ التالي أدناه:

PresentError: خطأ #2025: يجب أن يكون DisplayObject الذي تم توفيره طفلًا للمتصل. في flash.display :: displayObjectContainer/removeChild () في Move/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
هل كانت مفيدة؟

المحلول

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

نصائح أخرى

ليس لدي مترجم AS3 في متناول اليد لاختبار هذا ، ولكن منذ أن فعلت stage.addChild(ScoreObjects[0]) أعتقد أنك يجب أن تفعل stage.removeChild(ScoreObjects[0])?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top