搬运自http://blog.163.com/lijianwei_123/blog/static/18489289120103203514673/
最近在做项目的过程中需要flash与js之间的互相调用,查找资料flash与js的通信有三中方法。
1.getURL("javascript:jsFunctionName()");
getURL是flash的一个全局函数,作用是向浏览器发送一个请求。熟悉js的人一定知道,向浏览器
发送javascript:开头的请求,其实就是模拟了一个js的请求协议,浏览器会去在当前环境中找指
定的function。
这种方法在flash早期版本比较流行。
2.fscommand("command","arguments");
fscommand的方法是flash中与播放器通讯的方法,通常向播放器,发送命令。
例如:fscommand("fullscreen",“true“);使播放器全屏显示。
由于在web页面中flash播放器也根js在同一环境下,所以可以通过播放器与js通讯。
“flashId”是播放器对象在web页面中的id名字,这里假设就是flashId。
当在as中调用fscommand命令时,播放器会在web环境中找名为:
flashId_DoFSCommand("command",arguments)的方法,参数与as中fscommand的参数相同。
这里可以根据command的不同调用不同的方法,在js里
如:
if(command=="alert"){
alert(arguments);
}
3.flash8后提供了一个扩展类,可以执行对js和js对as的调用。
ExternalInterface.call("functionName",parameters);
functionName:js中的函数名称。
parameters:传过去的参数,用逗号隔开
简单的一句就可以实现对js方法的调用
同时这个类也可以实现js对as方法的调用,:)
ExternalInterface.addCallback('标识名',parent,Function);
这个方法就是把as中的一个function注册为一个“标识名”,让js可以通过这个标识调用
标识名:js中可以调用的名称
parent:方法运行环境也就是function中的this是谁。有一点像js中的call(parent,)或者apply(parent)
的感觉
funtion :as 中的一个方法名称,注意是Function对象,不是string型