0

Ich habe eine Methode: myMethod() {}, die ich für JavaScript zugänglich machen möchte. Ich habe ein bisschen recherchiert und herausgefunden, können Sie einen Rückruf zu ExernalInterface hinzufügen müssen, so ist hier, was ich getan habe:Referenzieren Problem beim Hinzufügen von Callbacks Exernal Interface in Flash/ActionScript3

ExternalInterface.addCallback("invokeMyMethod", myMethod); 

Nun, wenn ich meine Web-Seite mit dem Blitz auf sich laden, bekomme ich ein Fehler:

ReferenceError: Fehler # 1065: Variable myMethod ist nicht definiert. bei Haupt $ CINIT() bei global $ init()

myMethod ist in der Hauptklasse enthalten ist ... hier ist, wie Main.as aussieht:

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 
     } 
    } 
} 

ich keine Ahnung, wie man ExernalInterface.addCallback erkennen, dass myMethod existiert ... Hat jemand irgendwelche Ideen?

Danke,
Matt

Antwort

0

Jakobs Antwort oben funktioniert gut. Aber es erstellt andere Fehler, weil es nun versucht, den Zugriff auf nicht-statische Variablen aus einer statischen Methode ... Also habe ich versucht, dies:

Ich zog das:

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

in meine Hauptklasse, wie dies :

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 
     } 
    } 
} 

Und es funktionierte gut

0

Ihre myMethod Funktion in der Hauptklasse, sondern um es Ihre Referenz (in der if-Anweisung) nicht. Wenn Sie myMethod statisch zu machen, dann könnte Ihre addCallback Aussage wie folgt aussehen:

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

Oder wenn Sie eine Instanz von Haupt irgendwo haben, könnten Sie schreiben:

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

gibt es einen anderen Weg, um es anderen zu tun, als es statisch zu machen? Ich habe versucht, zu setzen: ExternalInterface.addCallback ("invokeMyMethod", Main.myMethod); in der Hauptklasse und ich bekomme immer noch den gleichen Referenzfehler ... Ich kann mir nicht vorstellen, was ich sonst noch machen soll. – Matt

+0

btw statisch wurde diesen Fehler los, aber es hat andere erstellt, deshalb würde ich es vermeiden wollen, es statisch zu machen, wenn ich kann – Matt