0

J'ai une méthode: myMethod() {} que je veux rendre accessible à javascript. Je l'ai fait un peu de recherche et a trouvé que vous devez ajouter un rappel à ExernalInterface, alors voici ce que je l'ai fait:Problème de référencement lors de l'ajout de rappels à l'interface Exernal dans Flash/ActionScript3

ExternalInterface.addCallback("invokeMyMethod", myMethod); 

Maintenant, quand je charge ma page web avec le flash, je reçois une erreur:

ReferenceError: Erreur n ° 1065: La variable myMethod n'est pas définie. Main cinit $() à initialisation global $()

myMethod est contenu dans la classe principale ... voici comment Main.as ressemble:

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

Je n'ai pas la moindre idée comment faire ExernalInterface.addCallback se rendre compte que myMethod existe ... N'importe qui a des idées?

Merci,
Matt

Répondre

0

réponse de Jacob ci-dessus fonctionne très bien. Mais il a créé d'autres erreurs parce qu'il était maintenant tente d'accéder à des variables non statiques à partir d'une méthode statique ... Alors j'ai essayé ceci:

je me suis déplacé le:

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

dans ma classe principale, comme celui-ci :

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

Et il a bien fonctionné

0

Votre fonction myMethod est à l'intérieur de la classe principale, mais votre référence (dans l'instruction if) n'est pas. Si vous faites myMethod statique, votre déclaration de addCallback pourrait ressembler à ceci:

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

Ou si vous avez une instance de Main quelque part, vous pouvez écrire:

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

est-il une autre façon de le faire autre que d'en faire statique? J'ai essayé de mettre: ExternalInterface.addCallback ("invokeMyMethod", Main.myMethod); dans la classe Main et j'ai toujours la même erreur de référence ... Je ne peux pas penser à quoi faire d'autre. – Matt

+0

btw statique s'est débarrassé de cette erreur, mais il a créé d'autres, c'est pourquoi je voudrais éviter de le rendre statique si je peux – Matt