flash优势
flash对浏览器从不挑剔,无论ie,还是chrome等。只要你安装了flashplayer。在浏览器中,flash叫flash。在手机和桌面(mac,win,ipad)中叫air。所以,对于跨平台,flash也是一个不错的解决方案。
发布到android,iphone,mac端案例(发布到win下也可以的):https://verylab.com/
标准
既然是flash与js互相通讯。那就是flash可以调用js里边的方法,js也可以调用flash里边的方法。两边都需要写代码,都要有个标准。
对于flash,使用到的api是ExternalInterface
。在as2时代,使用的是fscommand
。在as3中,仍保留改方法的使用。
如果flash想接受js端的方法调用,需要先对方法,进行侦听。参考如下。
参数1 flash端被调用的方法名,字符串类型
参数2 flash这边对应的调用方法
if(ExternalInterface.available)
{
ExternalInterface.addCallback("setData", setData);
}
function setData(value:String):void
{
}
如果flash想调用js端的方法,请使用call。参考如下。
参数1 js端被调用的方法名,字符串类型。
参数2 给js端传递过去的参数。
if(ExternalInterface.available)
{
ExternalInterface.call("sendMsg", "hello, world");
}
js端调用flash端,先要按标准将swf添加到html中。通常,我们都是用swfobject.js
自动添加。通过embed、object
标签,手动添加也可以。但想js这边能成功调用到flash端,一定要写好id、name
属性。因为通过id或name,你可以获取到flash的引用。这样,你才可以调用到flash里边的方法。id和name的值都写成相同的。
js端获取flash的引用。参考如下。
myflash为name、id的值
function getSwf()
{
return window['myflash'] || document['myflash'];
}
js端想调用flash中的方法。先获得swf的引用,再使用flash端侦听的方法。参考如下。
getswf() 是上边举例的获取swf的引用
saveData 是flash端侦听的方法名
"虚幻之物对应着冥冥之路!" 是参数值,一个字符串类型。
getSwf().saveData("虚幻之物对应着冥冥之路!");
js端想被flash调用,直接在js中定义方法就可以。参考如下。
sendMsg flash端调用js端的方法名。
value 参数
function sendMsg(value)
{
}
相关
object、embed方式添加flash到网页中:
http://blog.csdn.net/abeetle/article/details/8617768
各浏览器下,object、embed方式添加flash到网页中的差异:
http://www.cnblogs.com/kiter/p/3857889.html
swfobject.js方式添加flash到网页中:
http://www.cnblogs.com/snowinmay/p/3373892.html