0

У меня есть метод: myMethod() {}, который я хочу сделать доступным для javascript. Я сделал несколько исследований и выяснил, что вам нужно добавить функцию обратного вызова для ExernalInterface, так вот что я сделал:Ссылка на проблему при добавлении обратных вызовов к внешнему интерфейсу в Flash/ActionScript3

ExternalInterface.addCallback("invokeMyMethod", myMethod); 

Теперь, когда я загрузить мой веб-страницу со вспышкой на нем, я получаю ошибка:

ReferenceError: Ошибка # 1065: Переменная myMethod не определена. на Main $ 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 существует ... У кого-нибудь есть идеи?

Спасибо,
Matt

ответ

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 находится внутри главного класса, но ваша ссылка на него (в, если заявление) не является. Если вы MyMethod статичны, то ваш addCallback оператор может выглядеть следующим образом:

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

Или если у вас есть экземпляр Main где-то, вы могли бы написать: ответ

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

есть ли другой способ сделать это, кроме делать это статический? Я попытался поставить: ExternalInterface.addCallback ("invokeMyMethod", Main.myMethod); в основном классе, и я все равно получаю ту же ошибку ссылки ... Я не могу придумать, что еще делать. – Matt

+0

btw static избавился от этой ошибки, но создал другие, поэтому я бы хотел избежать статичности, если смогу – Matt

 Смежные вопросы

  • Нет связанных вопросов^_^