The Javascrīpt and Flash Integration Kit是MM的Mike Chambers和Christian Cantrell开发的一套用于Javascrīpt和Flash通讯的通用接口程序。通过这套接口,两种语言的大部分数据类型能够被相互支持。之前JS与Flash通讯的方法是通过fsCommand(),这一套程序用到了flash中的LocalConnection对象,支持主流的浏览器平台。
var uid = new Date().getTime(); var flashProxy = new FlashProxy(uid, '/path/to/JavascrīptFlashGateway.swf');在页面中用FlashTag对象代替传统的<object>或<embed>来插入Flash文件:
<scrīpt type="text/javascrīpt">var tag = new FlashTag('/path/to/flashContent.swf', 300, 300); // last two arguments are height and widthtag.setFlashvars('lcId='+uid);tag.write(document);</scrīpt>uid用来配对LocalConnction对象:分别为FlashProxy提供id参数和作为主Flash文件传入的lcId参数。
在JS中要调用Flash中的方法,使用flashProxy对象的call()方法:
flashProxy.call('myActionscrīptFunction', 'my string', 123, true, new Date(), null);该方法在页面上插入JavascrīptFlashGateway.swf文件,并且传入相应的参数。然后这个文件则通过 LocalConnection对象发送指令到连接的Flash文件中。每次调用这个方法,JavascrīptFlashGateway.swf都会重新载入一次(通过改变div的innerHTML)。
主Flash文件还需要建立一个JavascrīptProxy对象来响应JS的调用(其实也就是初始化一个对应的LocalConnection对象):
var proxy:JavascrīptProxy = new JavascrīptProxy(_root.lcId, this);Flash中调用JS比较简单,其实本质上就是用:
import com.macromedia.javascrīpt.JavascrīptProxy; var proxy:JavascrīptProxy = new JavascrīptProxy(); proxy.call("javascrīptMethodName", "arg1", new Object()); // or proxy.javascrīptMethodName("arg1", new Object());至于两种语言的对象相互转换则分别有FlashSerializer类和JavascrīptSerializer类来做序列化的工作。
总而言之,这一套接口还是LocalConnection的应用,和之前的整合了浏览器功能的Flash导航有异曲同工之妙。这一类型的应用基本上都是通过重载一个Flash文件(用页面刷新或用innerHTML内部刷新)来发送指令更新主Flash文件。
******
系统要求
******
此Javascrīpt 与 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