Flash AS3继承:加载还是初始化事件?

Flash AS3继承:加载还是初始化事件?,flash,actionscript-3,inheritance,Flash,Actionscript 3,Inheritance,假设我们有以下类: public class ImageButton extends MovieClip { private var bmpNormal:BitmapData; // ------- Properties ------- public function get BmpNormal():BitmapData { return bmpNormal; } public function set BmpNormal(value:BitmapData

假设我们有以下类:

public class ImageButton extends MovieClip
{  
    private var bmpNormal:BitmapData;

    // ------- Properties -------
    public function get BmpNormal():BitmapData { return bmpNormal; } 
    public function set BmpNormal(value:BitmapData):void {  bmpNormal = value; } 


    public function ImageButton()
    {
    }

    public function Draw()
    {
        var bm:Bitmap = new Bitmap(BmpNormal); 
        this.addChild(bm);
    }
}
ImageButton的实例添加了以下代码:

var imgBtn:ImageButton = new ImageButton();
imgBtn.BmpNormal = new onstageBMPData(0,0);
imgBtn.Draw();  //<- No need for this line ??
this.addChild(imgBtn);
我们尝试使用INIT、ADDED或RENDER事件,但似乎不起作用

    public function ImageButton()
    {
        this.addEventListener(Event.RENDER, onAdded, false, 0, false );
    }

尝试
事件。将\u添加到\u阶段
事件。从\u阶段
中删除\u,以便在将您添加或删除到阶段显示列表时收到通知

您可以在
ImageButton
实例本身中侦听此事件

public function ImageButton() {
    addEventListener(Event.ADDED_TO_STAGE,handleAdded);
    addEventListener(Event.REMOVED_FROM_STAGE,handleRemoved);
}

private function handleAdded(e:Event):void {
}

private function handleRemoved(e:Event):void {
}
可以在setter中添加Draw()方法:

 public function set BmpNormal(value:BitmapData):void {  
     bmpNormal = value; 
     Draw();
   }

 private function Draw()
 {
    var bm:Bitmap = new Bitmap(bmpNormal); 
    this.addChild(bm);
 }
由于bitmapData值在setter的参数中传递,因此不需要事件来调用Draw()方法,变量bmpNormal从setter获取其值,然后可以在Draw()函数中使用它来创建新的位图实例,然后将其添加到ImageButton

 public function set BmpNormal(value:BitmapData):void {  
     bmpNormal = value; 
     Draw();
   }

 private function Draw()
 {
    var bm:Bitmap = new Bitmap(bmpNormal); 
    this.addChild(bm);
 }