如果要JS访问Flash中的函数,需要用addCallBack注册一个回调函数,让JS去调用(AS2例子)
代码如下 | 复制代码 |
import flash.external.*; |
我们可以trace一下,这个时候如果是true,表示注册成功
OK,下面web中试用一下:
代码如下 | 复制代码 |
|
这面的WEB代码我们用Adobe Flash自动生成的,然后写相应的JS代码:
代码如下 | 复制代码 |
|
OK,我们在Web中加一个button来调用这个flashcall:
测试一下:
IE6,7,8,9一切正常
FF:失败
Chrome:失败
失败原因:SetImgPath不是函数,(is not a function /not defined)
这就很奇怪了,我们可以用一个alert,来输出thisMovie("123"):alert(thisMovie("123"));
输出结果并不是Null,说明已经找到了我们的Flash,但是为啥FF和Chrome就总是找不到函数呢?
逛了各大论坛,比较一致的说法是addCallback必须要是flash加载完毕才能注册成功,好吧,我们加一个settimeout函数,判断是否加载成功,我们改一下上面的flashcall:
代码如下 | 复制代码 |
function flashcall(str){ |
恩,我们用个settimeout,每隔100毫秒去调用一次,如果异常就持续调用,直到成功为止!
遗憾的是,始终不成功,程序进入死循环!
崩溃中
通过查阅各种资料,终于找到了原因:
FF中浏览器只认识embed标记,所以如果你用getElementById获 flash的时候,需要给embed做ID标记,而IE是认识object标记的 ,所以你需要在object上的ID做上你的标记
明白了吗?原来在FF和Chrome中,Flash必须用embed才能识别出他的ID,用Object标签是无法识别ID的,我用的Html是Flash自动生成的,都是Object标签,害我调试了一个下午,才明白原来问题出在这里。
知道原因了,就好处理了,改标签:
代码如下 | 复制代码 |
|
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级