2010-05-14 39 views
0

我試圖建立類似面向方面的編程在ActionScript 3,基本上我需要能夠做的唯一事情是這樣的:可能爲Actionscript 3的函數添加一個EventListener?

SomeClass.getMethod("methodName").addEventListener(afterMethodExecuted, function() { 
    //run code 
}); 

這樣我可以運行代碼之後(或之前)任何類中的任何方法都已運行,從而提供了許多新的可能性。

我該如何實施?

回答

2

您可以在方法上編寫包裝。 Flex庫的BindUtils類只使用ChangeWatcher。它通過包裝一個屬性來實現,但在ActionScript中,一個方法只是一個屬性。

我建議閱讀這些方法的代碼($ FLEX_ROOT/sdks/4.0.0/frameworks/projects/framework/src /),以瞭解如何做到這一點。您可能也有興趣FunctionReturnWatcher

+0

請注意,給定的方法應該更新所有實例,如果我給一個類而不是一個對象(類實例)。你鏈接的課程是這樣工作的嗎? – Tom 2010-05-15 08:30:11

+0

據我所知,我鏈接的課程不會那樣做。您可以用類似的方法包裝類構造函數,以確保它創建的每個實例都被包裝。 (我希望這是有道理的 - 看看這裏http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/Object.html#constructor看看如何覆蓋一個對象的構造函數) – 2010-05-20 15:40:22

+0

這可能會導致儘管如此,性能的重大損失。 – Tom 2010-05-28 14:57:35

相關問題