0

メソッドがあります: myMethod() {}javascript にアクセスできるようにしたいです。少し調べてみたところ、ExernalInterface にコールバックを追加する必要があることがわかったので、次のようにしました。

ExternalInterface.addCallback("invokeMyMethod", myMethod);

フラッシュを含む Web ページをロードすると、次のエラーが表示されます。

ReferenceError: エラー #1065: 変数 myMethod が定義されていません。Main$cinit() で global$init() で

myMethod は Main クラスに含まれています... 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...誰にもアイデアはありますか?

ありがとう、
マット

4

2 に答える 2

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

そして、それはうまくいきました

于 2009-07-06T07:39:37.723 に答える
0

myMethod 関数は Main クラス内にありますが、それへの参照 (if ステートメント内) はそうではありません。myMethod を静的にすると、addCallback ステートメントは次のようになります。

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

または、 Main のインスタンスがどこかにある場合は、次のように記述できます。

ExternalInterface.addCallback("invokeMyMethod", myObj.myMethod);
于 2009-07-06T07:19:31.773 に答える