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

Mr_*_*ime 2 javascript browser flash interface

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

Javascript: alert("start"); var so; so = document.embeds[0]; 
so.addParam("allowScriptAccess","always");  import flash.external.ExternalInterface; 
ExternalInterface.call("setValue[2600]");
Run Code Online (Sandbox Code Playgroud)
  1. 显示警告,告诉我它确实已开始执行
  2. 将嵌入式Flash文件保存到变量中并设置访问权限
  3. 导入该类
  4. 调用方法

我不确定这个类的东西是如何工作的?这只是我从该网站上得到的点点滴滴,但我真的不明白它是如何工作的(但最终还是希望).这是网站:http://bytes.com/topic/flash/answers/694359-how-do-i-access-flash-function-using-javascript.当我执行带有输入的代码时没有任何反应,但是当我没有该声明时,警报会出现吗?

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

Lar*_*sjö 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);
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

JavaScript可能看起来像这样:

var so = document.embeds[0];
so.setValue(2600);
Run Code Online (Sandbox Code Playgroud)