2016-06-14 68 views
0

我正在用flex寫一個程序,並且對這個指針有問題。AS3,對'this'指針的說明

我有一個函數內的函數調用,我想知道我的這個指針傳遞哪個事件。

private function funcA(someArgument) 
{ 
    newDialog.show("Title", "Body", funcB, this) // the 'this' is the argument for funcB 
} 

private function funcB(CloseEvent:event) 
{ 
    if(event == Event.CANCEL) 
     doStuff; 
    if(event == Event.COMPLETE) 
     doOtherStuff; 
} 

爲了澄清,我的問題是,當我通過this指針到在newDialog的功能,我會通過我的新創建的對話還是我傳遞FuncA的。我在想,希望它的前者。

我只是手動測試這個,但系統非常大,目前與其他事件綁定在一起,所以我很難實例化對象來測試它們。

+0

您正在傳入包含此代碼的作用域/類實例。 – BadFeelingAboutThis

+2

'CloseEvent:event'看起來應該是'event:CloseEvent' –

+0

OP可能來自C#或類似的形式。 –

回答

0

當我將這個指針傳遞給newDialog中的函數時,我傳遞了我新創建的對話還是傳遞給了funcA。

都不是。

您有private function,它是class的成員。爲了調用function,必須創建一個對象,該對象的實例爲class,然後可以在該對象上調用funcA

this是對該對象的引用。

1

雖然null無誤,但funcB上的方法簽名看起來應該添加爲事件偵聽器。 funcB正在等待一個事件。所有事件都有一個屬性target(它是分派事件的實際對象)和currentTarget(它是正在偵聽的對象)。這些只會在顯示列表上冒泡事件的情況下有所不同,其中一個子對象確實派發了該事件。

如果您發現此代碼的類不是Event的子類,我會希望funcB錯誤很難。如果它是事件的一個子類,它不應該是,因爲funcA中的功能不應該是事件的責任。