0

我有一个方法:myMethod() {}我想让 javascript 可以访问。我做了一些研究,发现您需要向 ExernalInterface 添加回调,所以这就是我所做的:

ExternalInterface.addCallback("invokeMyMethod", myMethod);

现在,当我加载带有 flash 的网页时,出现错误:

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

您的 myMethod 函数在 Main 类中,但您对它的引用(在 if 语句中)不是。如果您将 myMethod 设为静态,那么您的 addCallback 语句可能如下所示:

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

或者,如果您在某处有 Main 实例,您可以编写:

ExternalInterface.addCallback("invokeMyMethod", myObj.myMethod);
于 2009-07-06T07:19:31.773 回答
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 回答