2014-10-20 10 views
0

我看過這個:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Function.html 但是,這並不完全對應於我想要做的,我找不到合適的解決方案。不過,我的問題並不複雜。AS3 - 在functionClassB中做functionClassA.call(),參數爲

這裏的情況是:

mains.as包含泛函(strParam:字符串)

onlineClass.as包含一個functionB工作是這樣的:

private static functionB (fnParam:Function):void //my fnParam is functionA 
{ 
    var strParam:String = getSomeStringResult(); 
    //I have a result from a function 

    fnParam.call(strParam); 
    //I want to execute functionA with strParam as parameter 
} 

但我不明白我與呼叫參數有什麼關係。 我想:

fnParam.call(null, strParam); 

但它返回一個錯誤: [故障]例外,信息=類型錯誤:錯誤#1009:無法訪問屬性或空對象引用的方法

我肯定的答案已經存在的地方,但搜索「功能」和「呼叫」無處可去。

謝謝你的幫助。

+0

如果'functionB'的唯一參數是'fnParam'(並且你正在傳遞'functionA'),那麼你從哪裏得到'strParam'? – Marcela 2014-10-20 13:28:43

+0

strParam來自我沒有在這裏開發的functionB執行。我需要傳遞給functionA執行functionB時得到的strParam。 (我應該編輯我的帖子更清楚嗎?) – 2014-10-20 13:39:07

回答

0

好吧,我讓我的代碼工作,我認爲這可能是一個靜態的故事。泛函也不是一成不變的,當我把它作爲靜態FunctionB的參數,這個工程:

private static var functionACallback:Function; 

public static functionB(functionA:Function):void 
{ 
    functionACallback = functionA; //set the static functionACallback 
    var strParam = getSomeStringResult(); //get the string 
    functionACallback(strParam); //call the static var with parameter 
} 

我並不完全瞭解這裏的問題,但上面的代碼解決問題。

defenestrate.me的回答是有幫助的。

0

如果一個參數是一個函數,那麼你可以直接把它作爲參數名稱,如果它被傳遞到另一個功能:

functionB(fnParam:Function){ 
    fnParam('strParam'); 
} 

這裏的問題看起來像泛函爲空時,它被穿過到functionB。這可能是因爲它們處於不同的文件/類中,但在調用functionB之前可能需要調試以確保可以訪問functionA。

+0

謝謝你的答案。當我嘗試你的解決方案時,我仍然有同樣的錯誤,所以functionA可能爲空。但是當我讓我的代碼工作時沒有字符串參數:fnParam.call(),它工作正常。這就是爲什麼我不明白這個錯誤。 – 2014-10-20 14:16:27

+0

從你的例子中,可能值得在調用fnParam.call()時增加一個斷點來確保strParam具有你期望的值。雖然我確信即使使用null值也應該調用該函數,但可能值得檢查getSomeStringResult()的返回值是否會導致問題。如果fnParam變量確實是一個函數而不是null,那麼你也可以看到這一點。 – 2014-10-20 14:30:27