Наследование AS3: загрузка или событие инициализации? - PullRequest
0 голосов
/ 17 августа 2010

Предположим, у нас есть следующий класс:

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

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

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

Мы пытались использовать INIT, ДОБАВЛЕНО или RENDER события, но это не похоже на работу

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

Ответы [ 2 ]

1 голос
/ 17 августа 2010

Вы можете добавить метод 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.

1 голос
/ 17 августа 2010

Попробуйте 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 {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...