2010-08-17 2 views
0

Давайте предположим, что мы имеем следующий класс:AS3 Наследование: загрузка или событие init?

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); 

Теперь проблема/вопрос о том, что метод рисования() не является на самом деле нужно ... Там должен быть способ выполнения процедуры отрисовки, когда класс inited или загружен, поэтому результирующий код будет:

var imgBtn:ImageButton = new ImageButton(); 
imgBtn.BmpNormal = new onstageBMPData(0,0); 
this.addChild(imgBtn); 

Мы TRIE d, используя INIT, Добавленные или ТОНИРОВАТЬ события, но это не похоже на работу

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

ответ

1

Попробуйте Event.ADDED_TO_STAGE и Event.REMOVED_FROM_STAGE, чтобы получить уведомление, когда добавляются или удаляются в список отображения стадии.

Вы можете прослушивать эти события в самом экземпляре 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 { 
} 
+0

Это то, что я искал, спасибо. –

1

Вы можете добавить метод Draw() в инкубаторе:

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

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

Поскольку значение BitmapData передается в аргументах вашего сеттер, вы не нужно событие для вызова Draw() метод, переменная bmpNormal получает свое значение от сеттера, тогда его можно использовать в функции Draw() для создания нового экземпляра Bitmap, который затем можно добавить в ImageButton.

Смежные вопросы