2010-12-19 30 views
2

我有一个Flash文件,其中包含一个“游戏”包,其中有一个类“分数”和一个方法setValue()。我想写一些Javascript的行,让我可以调用这种方法。有人指示我参加本教程,但我仍然有点困惑。使用Javascript调用flash(.swf)文件中的方法?

Javascript: alert("start"); var so; so = document.embeds[0]; 
so.addParam("allowScriptAccess","always"); import flash.external.ExternalInterface; 
ExternalInterface.call("setValue[2600]"); 
  1. 显示一个警告,告诉我,这确实已经开始执行
  2. 保存嵌入式闪存文件到一个变量,并设置访问
  3. 进口该类
  4. 调用该方法

我不确定这个课程是如何工作的?这只是我能够从该网站获得的点点滴滴,但我并不真正了解它是如何工作的(但最终肯定会有希望)。这是网站:http://bytes.com/topic/flash/answers/694359-how-do-i-access-flash-function-using-javascript。当我通过输入执行代码时什么也没有发生,但是当我没有这个声明时,提示会出现吗?

如果有人能详细说明我可以怎么称呼这种方法,我会非常感谢! :)

回答

6

您在那里的代码是JavaScript和ActionScript的混合。

在ActionScript中,您需要注册setValue函数以供外部使用,因此可以从JavaScript调用它。代码可能是这个样子:

package game 
{ 
    import flash.display.Sprite; 
    import flash.external.ExternalInterface; 
    import flash.text.TextField; 

    public class Scores extends Sprite 
    { 
     public var txtScore:TextField;  // A textfield in the sprite 

     public function Scores() 
     { 
      // Register the function for external use. 
      ExternalInterface.addCallback("setValue", setValue); 
     } 

     private function setValue(value:Number):void 
     { 
      txtScore.text = String(value); 
     } 

    } 

} 

和JavaScript可能会是这个样子:

var so = document.embeds[0]; 
so.setValue(2600); 
+0

我做了同样的步骤,但得到一个JS异常:'不能读取未定义的属性'setValue' – 2015-05-26 22:17:17

0

Adob​​e已经有一个漫长的,但有用的例子here的文档。他们展示了ActionScript以及JavaScript,以及它们如何以两种方式进行交互。

相关问题