as3 центрирующий объект - PullRequest
       2

as3 центрирующий объект

0 голосов
/ 27 ноября 2011

Хорошо, у меня есть следующая структура кода:

var environment:AvEnvironment = new AvEnvironment(stage.stageWidth, stage.stageHeight);   
addChild(environment);      
environment.addChild(new Player());
environment.addChild(new Terrain());

класс player передает информацию о своих x и y в класс environment, чтобы класс environment центрировался на объекте игрока. Поскольку terrain также является потомком родителя, класс terrain также будет центрирован. Однако я не хочу, чтобы это было так: я хочу, чтобы класс terrain находился в верхнем левом углу родительского элемента (environment) при создании игры.

Это код, который я пытаюсь реализовать в классе terrain:

if(parent)
            {
                var ev:AvEnvironment = AvEnvironment(parent);

                this.x = -ev.x
                this.y = -ev.y

            }

Однако в методе конструктора это не работает, так как родитель возвращает null, и я не уверен, почему.

1 Ответ

0 голосов
/ 27 ноября 2011

Я думаю, что ваш Terrain инициализируется, вызывая ваш код выше, прежде чем он получит родителя (addChild ()).Вы можете попробовать следующее в вашем классе Terrain:

this.addEventListener(Event.ADDED_TO_STAGE, doDNATest); //Place this in your Terrain() constructor

function doDNATest(evt:Event) {
  //By the time this event is called you should know who the father is
  //since this is called once Terrain is on it's parent's (environment) display list
      if(this.parent)
      {
          var ev:AvEnvironment = AvEnvironment(this.parent);
          this.x = -ev.x
          this.y = -ev.y
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...