as3 this.graphics调用什么都不做

时间:2011-01-01 17:39:32

标签: actionscript-3

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 个答案:

答案 0 :(得分:1)

我没有立即看到问题。需要考虑的几件事情:

  • 向B调用super()
  • 添加构造函数
  • 您正在向A添加事件侦听器,因此在ENTER_FRAME事件发生之前,A必须位于舞台上
  • 您可能想先使用graphics.clear(),然后以graphics.endFill()结束

答案 1 :(得分:0)

奇怪的是代码对我来说很好(OSX上的Chrome)。

我可以看到它出错的唯一方法是当b为空时调用事件监听器,所以你可以在那里检查“if(b)b.draw();”

或者电影停止了(就像在IE中发生的那样,你需要点击以启用swf才能运行)