下载地址http://weblogs.macromedia.com/flashjavascript/downloads/FlashJavascriptGateway.zip 
使用此 JavaScript 与 Flash 整合工具包, JavaScript能够调用ActionScript函数(反之亦可),Flash和Html开发者能够借此进行更好的开发。可以在两种环境下相互通信主要数据类型包括:
- objects 
- arrays 
- strings 
- numbers 
- dates 
- booleans 
- nulls 
- undefined 
另外,此 JavaScript 与 Flash 整合工具包 能够正常工作于所有主要的浏览器与平台之上(详细内容请参见后面的“系统要求”)。
在以下位置可以找到相关的最新信息和最新版本:
http://www.macromedia.com/go/flashjavascript
本项目由Macromedia公司的 Christian Cantrell 和 Mike Chambers 开发编写。
******

安装
******
安装  JavaScript 与 Flash 整合工具包 非常简易。只需要将文件 JavaScriptFlashGateway.js 和JavaScriptFlashGateway.swf 从 installation 文件夹复制到网站目录下。放在哪里都可以,但建议将它放在多个项目均可使用的位置。
此工具包Flash方部分的安装要求将 source/flash/actionscript 下的库文件复制到您机器上的 Flash 或者 Flex 的类路径下(译者注:比如D:\Macromedia\Flash MX 2004\zh_cn\First Run\Classes\):
com/macromedia/javascript/JavaScriptProxy.as
com/macromedia/javascript/JavaScriptSerializer.as
复制文件时请确保维持以上目录结构不变。
****

使用
****
 -从 JavaScript 调用 ActionScript 函数-
要从 JavaScript 调用 ActionScript 函数,请确定网页文件中已链接文件 JavaScriptFlashGateway.js ,代码如下:
<script type="text/javascript" src="/path/to/JavaScriptFlashGateway.js"></script>
文件 JavaScriptFlashGateway.js 中包含了一个名为 FlashProxy(Flash代理) 的类,负责代理Flash和JavaScript之间的函数互调。FlashProxy 和在其中调用函数的Flash影片必须使用同一个 唯一标识(ID),以便让FlashProxy知道调用的函数位于网页上的哪个Flash影片上。创建唯一ID的最简单方法是使用时间戳。要创建唯一ID,可以网页面中插入这样的脚本标签:
var uid = new Date().getTime();
然后,创建一个FlashProxy的JavaScript类的实体,并传入刚刚创建的唯一ID以及文件 JavaScriptFlashGateway.swf  的路径,比如像这样:
var flashProxy = new FlashProxy(uid, '/path/to/JavaScriptFlashGateway.swf');
将Flash内容加入到网页中去的时候,也要用Flash变量将相同的唯一ID传入,文件 JavaScriptFlashGateway.js 中含有一个生成Flash标签及加入所需变量的简单方法,像这样:
<script type="text/javascript">
    var tag = new FlashTag('/path/to/flashContent.swf', 300, 300); // 最后两个参数是高和宽
    tag.setFlashvars('lcId='+uid);
    tag.write(document);
</script>
唯一ID通过Flash变量 lcId 被传入到Flash影片中去。现在你已经可以使用FlashProxy的实例从JavaScript调用ActionScript的函数了,像这样:
flashProxy.call('myActionScriptFunction', 'my string', 123, true, new Date(), null);
以上代码中,第一个参数是你要调用的ActionScript函数名,而其余作为调用函数的参数传入的参数必须是Flash支持的数据类型objects, arrays, strings, dates, numbers, booleans, nulls, 和 undefined 之一。
 -在JavaScript中响应Flash的函数调用-
无需对JavaScript代码作特殊处理即可在Flash里响应函数调用

只要页面中包含了文件 JavaScriptFlashGateway.js ,使用如下所述的技术,Flash就能够以任意数目的参数调用JavaScript函数。
 -从ActionScript调用JavaScript的函数-
请再次确认含有要调用JavaScript函数的HTML页中已链接了文件 JavaScriptFlashGateway.js。
将JavaScriptProxy 类导入Flash项目:
import com.macromedia.javascript.JavaScriptProxy;
然后创建JavaScriptProxy 类的实例如下:
var proxy:JavaScriptProxy = new JavaScriptProxy();
调用JavaScript函数有两种方法:
1.使用调用程序接口(API),如下:
proxy.call("javaScriptMethodName", "arg1", new Object());
第一个参数是欲调用的JavaScript函数名。其余参数将作为被调用函数的参数被传入。
2.也可以使用JavaScriptProxy类的方法来直接调用,而这些方法将被作为JavaScript(由JavaScriptProxy)代为处理。比如:
proxy.javaScriptMethodName("arg1", new Object());
 -在Flash里响应JavaScript的函数调用-
要用JavaScript调用Flash影片的函数,需要创建一个 JavaScriptProxy 类的实例以及定义函数被代为处理成的对象:
var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);
构造器带有两个参数。第一个参数是从HTML页中传进Flash影片中去的唯一标识。第二个是被调用函数将被代为处理成的对象或者类的实例。注意:此参数仅在Flash影片需要响应JavaScript的函数调用时才是必须的。
这就是所需的全部代码。所有JavaScript调用都将被引向构造器中参数所定义的对象。
******

系统要求
******
此JavaScript 与 Flash 整合工具包要求 6r65 以上版本的Flash播放器,并在以下浏览器中测试通过:
Windows IE 6.0 
Windows Firefox 1.0 
Windows Opera 8.0 
Macintosh Opera 8.0 
Macintosh Firefox 1.0 
Safari 1.2.4 and 2.0 
Linux Firefox 1.1 
******

已知问题
******
1.如非被明确的定义为 undefined,JavaScript 中的未定义对象属性将不能被连载并发给Flash。如果该变量未经声明,则将被清除。
2.在调试工具环境下,JavaScript和Flash的通讯会很缓慢,但是在其他平台和浏览器包括独立播放器下,其速度不会减缓。
3.不能传递循环中的对象或数组。JavaScript和ActionScript下的循环引用都可能引起死循环。换句话说,如果对象属性是指向其自身的一个引用,连载的代码将拼命地无限循环下去。