使用Javascript在flash(.swf)文件中调用方法?

时间:2010-12-19 12:41:26

标签: javascript flash browser interface

我有一个包含“游戏”包的Flash文件,其中包含“Scores”类和方法setValue()。我想写一些允许我调用该方法的Javascript行。有人指导我参加本教程,但我仍然有点困惑。

Javascript: alert("start"); var so; so = document.embeds[0]; 
so.addParam("allowScriptAccess","always");  import flash.external.ExternalInterface; 
ExternalInterface.call("setValue[2600]");
  1. 显示警告,告诉我确实已开始执行
  2. 将嵌入式Flash文件保存到变量中并设置访问权限
  3. 导入该类
  4. 调用方法
  5. 我不确定这个课程是如何运作的?这只是我从该网站上得到的点点滴滴,但我真的不明白它是如何工作的(但最终还是希望)。这是网站:http://bytes.com/topic/flash/answers/694359-how-do-i-access-flash-function-using-javascript。当我执行导入代码时没有任何反应,但是当我没有这个声明时,警报会出现吗?

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

Adob​​e的文档包含冗长但有用的示例here。它们显示了ActionScript以及JavaScript,以及它们如何以两种方式进行交互。