2011-09-29 18 views
2

我遇到了一些奇怪的事情,但也許有人遇到過這種情況。帶有元數據[Bindable]關鍵字的基類會自動擴展EventDispatcher嗎?

我有一個基類,它沒有擴展任何東西。讓我們把它...

public class FooBar { 
    //... 
} 

但我想結合其公開屬性的每一個:

[Bindable] public class FooBar { 
    public var propertyOne:String; 
    public var propertyTwo:String; 
} 

在調試/剖析類的,我注意到,每次一個屬性更改 - FooBar的實例正在調用「.dispatchEvent()」。但我的班級沒有延伸EventDispatcher

什麼給?

這是否意味着,在編譯時,我的類會自動擴展EventDispatcher或其他一些能夠分派事件的類?如果我的班級沒有在其中聲明的「addEventListener」方法,我怎麼能聽到PropertyChangeEvent

+0

從來沒有注意到這一點,有趣! – Exort

+0

有點發現更新:實際上,IEventDispatcher接口中聲明的所有方法都可用於該類。代碼會很好的編譯,我只是試了一下。另一位開發人員在他的Bindable類中自己調用「dispatchEvent()」時遇到了同樣神祕的背景活動。從技術上講,這意味着只需要聲明一個屬性或者Getter/Setter [Bindable]來使類實現IEventDispatcher,而不一定是整個類。 – bigp

+0

這裏是上面提到的開發人員的來源:http://old.nabble.com/-Bindable--and-dispatchEvent-td13765582.html – bigp

回答

3

當您使用[Bindable]元數據時,Flex編譯器將爲您生成大量代碼。如果您想知道發生了什麼,請查看What does the Flex [Bindable] tag do?的答案以及發佈在那裏的鏈接。

要回答你的問題:不,你的班級不延伸EventDispatcher。但是,編譯器會更改您的類,以便它將實現IEventDispatcher接口。生成的該接口的實現使用EventDispatcher的實例。

+0

看過那個old.nabble.com線程後(發佈在在我的問題上面的評論),IEventDispatcher接口是我的第二個猜測。感謝您確認並提供了一些資源:) – bigp

+0

只要在這裏發佈此消息,以避免有人想直接查看幻燈片,請解釋生成的代碼:http://www.slideshare.net/michael.labriola/潛水-內式柔性數據綁定-水域呈遞?SRC =嵌入 – bigp