2009-02-09 34 views
12

在FLEX應用程序中,我嘗試「重新分派」自定義事件。即component1執行dispatchEvnet(event),component2爲事件註冊一個處理程序,處理程序的唯一函數是dispatch(event)。最後,component3監聽來自component2的事件。我想要做的是類似於「重新拋出」異常的概念(以及類似的原因)。區別在於重新調度在AS3(Flash 10)中似乎不起作用。在IE中,沒有任何反應,並且在FF3中有一個例外,表示在調用Component3中的處理程序時嘗試強制將Event類型強制爲我的CustomEvent時類型強制轉換失敗。在調試器中跟蹤代碼顯示,在調用component3時,事件實際上是一個通用事件,所有我的自定義內容都丟失了。這應該是這樣嗎?在FLEX中重新分派事件

回答

19

您遇到的問題是由於您的自定義事件中不覆蓋clone()事件造成的。

當事件被重新分配時,它們被克隆和修改。如果你不重寫clone(),你會得到clone()的基本實現,它將返回一個Event。由於事件不能轉換爲您的自定義事件類型,因此會引發運行時錯誤。

從文檔:

在創建自己的自定義事件類,則必須以覆蓋繼承的Event.clone()方法爲它複製自定義類的屬性。如果您沒有設置您在事件子類中添加的所有屬性,那麼當偵聽器處理重新分派的事件時,這些屬性將不會具有正確的值。