вызовы as3 this.graphics ничего не делают - PullRequest
1 голос
/ 01 января 2011

класс A:

[SWF(width='800',height='600',frameRate='24')]
public class A extends MovieClip {
   private var b:B;
   public function A(){
     super();
     b = new B();
     addChild(b);
     addEventListener(Event.ENTER_FRAME, update);
   }
   private function update(e:Event):void {
     b.draw();
   }
}

класс B:

public class B extends MovieClip {
    public function draw():void {
       //! following code works well if put in constructor, but not here
       this.graphics.beginFill(0xff0000);
       this.graphics.drawCircle(200,200,50);
    }
}

вызовы this.graphics ничего не делают в методе draw, но прекрасно работают внутри конструктора B, что я и делаюне так?

Ответы [ 2 ]

1 голос
/ 02 января 2011

Я не вижу проблемы сразу. Несколько вещей для рассмотрения:

  • Добавить конструктор B, который вызывает super ()
  • Вы добавляете прослушиватель событий в A, поэтому A должен находиться на сцене перед тем, как произойдет событие ENTER_FRAME
  • Возможно, вы сначала захотите использовать graphics.clear (), а затем закончите с graphics.endFill ()
0 голосов
/ 03 января 2011

Странно, что код прекрасно работает для меня (Chrome на OSX).

Единственный способ, с помощью которого я могу понять, что он работает неправильно, - это прослушиватель событий, вызываемый, когда b равно нулю, так что вы можете поставить там проверку "if (b) b.draw ();"

Или фильм остановлен (как в IE, где вам нужно нажать, чтобы запустить SWF)

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