0

我有一個方法:myMethod() {},我想讓javascript可訪問。我已經做了一些調查,發現你需要添加一個回調ExernalInterface,所以這裏是我做了什麼:將回調添加到Flash/ActionScript3中的Exernal接口時引用問題

ExternalInterface.addCallback("invokeMyMethod", myMethod); 

現在,當我打開了我的網頁,上面有閃光燈,我得到錯誤:

ReferenceError:錯誤#1065:變量myMethod未定義。 在主$ CINIT() 全球$的init()

myMethod的包含在主類中...這裏是Main.as的樣子:

package { 
    import flash.external.ExternalInterface; 
    import flash.events.Event; 
    //import a bunch of other things... 

    if(ExternalInterface.available) { 
     ExternalInterface.addCallback("invokeMyMethod", myMethod); 
    } 

    public class Main extends Sprite { 
     //A bunch of other methods... 

     public function myMethod(str:String):void { 
     //Do something here 
     } 
    } 
} 

我不知道如何做ExernalInterface.addCallback認識到myMethod存在...任何人有任何想法?

謝謝
馬特

回答

0

雅各布的回答上面的作品就好了。但它創造了其他錯誤,因爲它現在試圖從靜態方法訪問非靜態變量...所以,我想這一點:

我感動:

if(ExternalInterface.available) { 
     ExternalInterface.addCallback("invokeMyMethod", myMethod); 
    } 

到我的主類,像這樣:

package { 
    import flash.external.ExternalInterface; 
    import flash.events.Event; 
    //import a bunch of other things...  

    public class Main extends Sprite { 
     //A bunch of other methods... 

     if(ExternalInterface.available) { 
     ExternalInterface.addCallback("invokeMyMethod", myMethod); 
     } 

     public function myMethod(str:String):void { 
     //Do something here 
     } 
    } 
} 

它工作得很好

0

你myMethod的功能是主類裏面,但你對它的引用(if語句)不是。如果您myMethod的靜態的,那麼你的addCallback聲明看起來是這樣的:

ExternalInterface.addCallback("invokeMyMethod", Main.myMethod); 

或者,如果你有一個主要的實例的地方,你可以寫:

ExternalInterface.addCallback("invokeMyMethod", myObj.myMethod); 
+0

是否有任何其他的方式來做到這一點比使其靜等?我試過把:ExternalInterface.addCallback(「invokeMyMethod」,Main.myMethod);在Main類中,我仍然得到相同的參考錯誤...我想不出還有什麼要做。 – Matt 2009-07-06 07:27:59