返回顶部

[文摘] JavaScript and Flash Integration Kit (Beta)

[复制链接]
awagink 显示全部楼层 发表于 2007-12-23 11:01:08 |阅读模式 打印 上一主题 下一主题
JavaScript and Flash Integration Kit (Beta)  
关于这个项目
JavaScript and Flash Integration Kit  通过允许js调用as方法,as调用js方法 让开发者在flash和html世界里得到最好的用户体验.在二者中可以传递的参数类型主要包括:

objects
arrays
strings
numbers
dates
booleans
nulls
undefined

另外JavaScript and Flash Integration Kit可以在大多数浏览器和平台正常工作,包括:

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

你可以从下列地址得到最新下载版本 :

http://www.macromedia.com/go/flashjavascript

这个项目由 Macromedia 公司的   Christian Cantrell 和 Mike Chambers  开发.

安装
安装JavaScript and Flash Integration Kit 还是很简单的,

1 : 从安装目录\FlashJavascriptGateway\installation拷贝JavaScriptFlashGateway.js ,JavaScriptFlashGateway.swf 到你网站的根目录.
2 : 从\FlashJavascriptGateway\source\flash\actionscript拷贝
com/macromedia/javascript/JavaScriptProxy.as
com/macromedia/javascript/JavaScriptSerializer.as
到你flash的classpath.注意目录结构一并放进去.

怎样使用

1 : 在js中调用as方法 (下面操作都在js中编写)

1.1 : 在网页中加入<script type="text/javascript" src="/path/to/JavaScriptFlashGateway.js"></script>
1.2 : 在JavaScriptFlashGateway.js文件中有一个叫做FlashProxy 的东西,他用来作为as/js方法互调的代理方法.这个FlashProxy 和你要调入的flash内容必须共享一个唯一的ID,这样FlashProxy 知道是哪个flash内容(方法) 需要被调入,
         最简单创建唯一ID 的方法是使用timestamp , 在js代码中加入:
  var uid = new Date().getTime();
1.3 : 现在创建一个 FlashProxy  实例 ,
          var flashProxy = new FlashProxy(uid, 'JavaScriptFlashGateway.swf');
   第一个参数是刚才创建的uid,第二个参数是根目录下的JavaScriptFlashGateway.swf 文件
1.4 : 当你想在你的网页中导入flash内容时,你必须把上面 FlashProxy构造函数中传入的唯一ID 设置给flashvars变量,JavaScriptFlashGateway.js 文件中有一个很简单的创建Flash tags和添加必须的flashvars的方法 ,像这样:
     var tag = new FlashTag('/path/to/flashContent.swf', 300, 300); // last two arguments are height and width
    tag.setFlashvars('lcId='+uid);
    tag.write(document);
  1.5 : 那个唯一ID 通过lcId这个flash变量被传给了flash内容,现在你已经可以使用FlashProxy实例在js中调用as方法了,像这样 :
  flashProxy.call('myActionScriptFunction', 'my string', 123, true, new Date(), null);
  第一个参数表示你要调入的as方法的方法名,其余的参数 都是这个方法需要的参数,这些参数要求必须是flash支持的数据类型包括:
  objects, arrays, strings, dates, numbers, booleans, nulls, and undefined.

  2 :在as中调用js中的方法 (下面操作都在as中编写)
在as中调用js中的方法 你不用做任何特别的操作,同样在网页中导入JavaScriptFlashGateway.js ,要被调的js方法可以包含任意数量的参数。
2.1 :再一次确认JavaScriptFlashGateway.js 被included到包含那个js方法(你要在as中调用的)所在的网页。
2.2 :在as项目中 import com.macromedia.javascript.JavaScriptProxy;
2.3 : 然后你用下面方式创建一个JavaScriptProxy实例 :
var proxy:JavaScriptProxy = new JavaScriptProxy();
2.4 :接下来你有两种方法调用js中的方法 :
方法a : 你可以使用call API 像这样 :
proxy.call("javaScriptMethodName", "arg1", new Object());
第一个参数是js中的方法名,其余的参数将被认为是 这个方法需要的参数。
方法b : 你也可以直接在JavaScriptProxy类上调用js方法 像这样 :
proxy.javaScriptMethodName("arg1", new Object());
注意 :javaScriptMethodName 用js中实际的方法名代替。

2.5 在as中接收js方法你要创建一个JavaScriptProxy 类的实例,同时你还要指定哪个方法要被代理。像这样:
var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);
这个构造器有两个参数 :第一个参数 是从html页传入到flash的唯一ID,第二个参数表示那个js方法被代理的实例,
注意 :参数只有在你需要调js中方法的时候才需要。


3 :Known Issues
3.1 :JS中对象Undefined 属性不能被序列化,除非你明确定义它为undefined 否则你不能把它传给as.
3.2 :   如果你使用debug player, 在js/as间互调方法,你会发现很慢。
3.3 : 你要传递的参数不能包含循环引用,在js和as中循环引用会引起死循环,换句话说 如果你一个对象有一个包含它自身引用的属性,序列化代码将引起死循环。


FAQ :

Q : 为什么要创建这个 Flash / JavaScript Integration Kit ?
A :这个Integration Kit允许开发者在一个application中最好的绑定html和flash.

Q : 以前绑定javascript 和 flash不是 也能做到么?
A :在过去 的确有javascript和flash通讯的 方法,他们不能很好的跨浏览器和平台,并且 这些技术只允许你在js和as中传递字符串,不支持复杂的数据类型 如 :objects和arrays


Q : 需要什么版本的flash播放器?
A :6.0以上版本 ,如果想支持低版本播放器 也是可以的,很简单 做如下调整:
       打开JavaScriptFlashGateway.fla 文件,然后打开Flash publish settings窗口(File > Publish Settings > Flash),取消Optimize for Player 6 r65钩选,然后编译 即可。

Q :integration kit  支持Flex么?
A : 支持Flex 和 Flash MX 2004
         

Q :我可以在flash和javascript之间传递哪些数据类型 ?
A :
Object
Array
String
Number
Boolean
Date
null
undefined

Arrays和objects里面可以包含其它支持的数据类型,支持嵌套。

Q :关于我要传递的数据的大小有没有什么限制 ?
A :当js调as方法的时候,大小有一些限制,但具体的大小与要传递的数据有关,如果你发送较大数据失败了,可以尝试发送小一点的,一般这个大小大约是 40K左右。

我们还没发现as调js方法有大小方面的限制。

Q :当我们用js调as方法时,可以得到一个返回值么?, or vice versa?
A :现在还不能,不过我们在以后的版本中正在想办法解决。

Q :你们有使用 Integration Kit  的 例子么 ?
A :有, MXNA Category ,你可以点击右键,选择view source 查看源代码。

Q : JavaScript and Flash Integration Kit  会被更新么?
A:会,这个kit作为osflash.org的一个开源项目 ,is actively developed
您需要登录后才可以回帖 登录 | 注册

本版积分规则

纳速健身网成立于2006年8月,是国内优秀健身运动网站,现拥浏览人数超30万。网站是集养生、武术、太极拳和健身气功等多种健身项目于一体的多功能交流平台。平台提供大量优质的教学视频、伴奏音乐(太极拳晨练音乐,广场舞音乐,健身气功音乐)、图文教程、运动科普和经验分享,为健身爱好者提供完善的运动指导平台。
  • 纳速QQ群乙:151815303
  • 纳速QQ群丙:79104490
  • 微信交流群:微信好友搜索【nasuwang】加小纳微信进群交流健身知识,备注【纳速】
  •                     或者扫描页面底部右侧二维码添加小纳微信>>>
  • 微信公众号

  • 微信群客服交流

  • Copyright © 2006-2021, 纳速健身网. | | 辽ICP备13002388号-1 辽公安网备21050202000005号公安网备号 纳速武术-乙 QQ