2010-08-08 78 views
2

簡單的問題..我想知道你們什麼時候在你們班擴展EventDispatcher。在我看來,只要我們有導入事件包,我們可以dispatchEvent沒有問題....我看到有人在他們的課程中擴展EventDispatcher ...不知道爲什麼...任何人都在意解釋?感謝百萬...什麼時候擴展EventDispatcher

回答

8

我想你可能會混淆的事實,許多對象在AS3擴展EventDispatcher在繼承樹更高,只需要導入flash.events包,以分派事件。例如許多DisplayObject類擴展了EventDispatcher。這裏有幾個例子:

Shape » DisplayObject » EventDispatcher » Object 

Sprite » DisplayObjectContainer » InteractiveObject » DisplayObject » EventDispatcher » Object 

通常我會延長此事件的任何時間,我與剛需之外的它的範圍,一些內部屬性發生變化或者某些功能是將對象進行通信的自定義類工作發生的歷史。這裏是一個例子:

public class Clock extends EventDispatcher 
{ 
    protected var _tick:uint; 

    protected function run():void 
    { 
     if(_tick + 1 > 60) { 
      _tick = 0; 
     } else { 
      _tick++; 
     } 
     dispatchEvent(new Event(Event.CHANGE)); 
    } 

    public function getTick():uint { return _tick; } 
} 

有時候保持一個對象的內部細節是唯一的「重要」。在上面的例子中,當調用run()方法時,Clock類執行一些內部邏輯,然後調度一個事件指示事件已經改變。任何正在監聽該事件的班級都可以致電公衆getTick()方法以找出_tick的值。這隱藏了實現並且保護變量不被外部類改變,並且同時提供了可以通過其讀取Clock的接口。

+0

不錯的解釋... + 1 .....:D – FlyingCat 2010-08-08 21:54:52

相關問題