доступ к дочернему мувиклипу FlashDevelop - PullRequest
0 голосов
/ 17 февраля 2010

У меня есть мувиклип внутри другого мувиклипа. Я дал дочернему мувиклипу имя экземпляра «hSprite» и добавил его на родительский этап мувиклипа. Теперь я получаю сообщение об ошибке, подобное следующему.

[Fault] exception, information=ReferenceError: Error #1056: Cannot create property hSprite on com.objects.Hero.

Если я удалю имя экземпляра из дочернего мувиклипа, ошибка исчезнет. но когда я добавляю имя экземпляра обратно, ошибка появляется снова.

Имейте в виду, что оба класса настроены на экспорт.

В родительский класс встроен пользовательский класс, который прекрасно работает. Но в ту минуту, когда я присваиваю дочернему мувиклипу имя экземпляра, ошибка снова запускается.

Вот класс, который встраивает родительский класс. Сначала я хочу получить доступ к дочернему мувиклипу с символом героя

package com.objects
{
   import flash.display.MovieClip;
   import flash.events.*;
   /**
    * ...
    * @author Anthony Gordon
    */
   [Embed(source='../../../bin/Assets.swf', symbol='Hero')]
   public class Hero extends GameObject
   {   
      private var aKeyPress:Array;
      private var jumpDisabled:Boolean = false;
      //private var heroSprite:MovieClip;

      public function Hero()
      {
         wY = 150;
         wX = 90;
         speed = .5;
         aKeyPress = new Array();
         TheGame.sr.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
         TheGame.sr.addEventListener(KeyboardEvent.KEY_UP,keyUpListener);
      }

      private function keyDownListener(e:KeyboardEvent):void {
          //trace("down e.keyCode=" + e.keyCode);         
          aKeyPress[e.keyCode]=true;
      }

      private function keyUpListener(e:KeyboardEvent):void {
         //trace("up e.keyCode=" + e.keyCode);
         aKeyPress[e.keyCode]=false;
      }

      override public function UpdateObject():void
      {
         Controls();
         updatePosition();
      }

      private function Controls():void
      {

         if (aKeyPress[38])//Key press up
            ;//dy -= speed;         
         else if (aKeyPress[40])//Key press down
            dy += speed;

         if (aKeyPress[37])//left
         {
            dx -= speed;
         }
         else if (aKeyPress[39])//Right
         {
            dx  += speed;
         }

         if (aKeyPress[32]){//space
            jump();
         }


      }//End Controls

      private function jump():void
      {
         if (!jumpDisabled)
         {
            if (onGround)
            {
               dy = -15;
               jumpDisabled = true;
            }
         }
         else
         {
            jumpDisabled = false;            
         }
      }
   }

}

1 Ответ

2 голосов
/ 17 февраля 2010

Вам необходимо сделать клип hSprite общедоступной переменной в классе.

public var hSprite:MovieClip;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...