html&As3 interactive之 JS调用as3

使用ExternalInterface.addCallback( ) 注册ActionScript 函数,然后在JavaScript端进行调用

ExternalInterface.addCallback( )

ExternalInterface API 允许注册ActionScript 函数, 以被JavaScript 调用。使用静态方法
addCallback( ) 注册ActionScript函数。addCallback( ) 方法接收两个参数:第一个参数为String
类型的函数名,浏览器将借此名称得知要调用的函数,第二参数为浏览器调用定义的函数名时
要执行的实际ActionScript函数。下面的例子注册了函数displayMessage ,在JavaScript中的别名
为showMessage:
ExternalInterface.addCallback("showMessage", displayMessage);
在JavaScript端需要得到Flash播放器对象引用,浏览器中的Flash播放器有两种类型:ActiveX 和
plug-in版本,ActiveX 版本运行在Internet Explorer上,而plug-in 版本运行在其他浏览器上。
ActiveX 版本播放器由HTML页中的<object>标签控制,通过window. objectId 让JavaScript得到
Flash播放器引用,objectId 是<object>标签的id属性值,比如<object> 标签的id属性为example,
那么ActiveX 播放器的引用就是window.example 。
plug-in 版本播放器由HTML页中的<embed>标签控制,通过window.document.embedName 让
JavaScript得到Flash播放器引用,embedName 是<embed>标签的name属性值,比如<embed>标签
的name属性为example,那么plug-in播放器引用就是window.document.example 。
一般情况下,我们并不知道用户使用什么版本的Flash播放器,有个方法是通过JavaScript的

navigator.appName 来检测用户浏览器的类型:

如果navigator.appName 包含Microsoft关键字,那么用户使用的就是Internet Explorer,也就是
ActiveX 播放器。
如果navigator.appName 不包含Microsoft关键字,也就意味着是plug-in 版本播放器。
下面的JavaScript代码用户检测播放器类型:
<script language="JavaScript">
var flashPlayer;
function detectFlashPlayer( ) {
if(navigator.appName.indexOf("Microsoft") != -1) {
flashPlayer = window.objectId;
}
else {

flashPlayer = window.document.embedName;
}
}
</script>
下一步,在<body>的onLoad属性中调用detectFlashPlayer( ) 函数:
<body onLoad="detectFlashPlayer">
变量包含当前Flash播放器的对象引用。
可通过flashPlayer 变量来调用注册的ActionScript 函数, 例如, 如果注册函数的别名为
showMessage,用下面的语句进行调用:
flashPlayer.showMessage( );
还可以传递参数,如果ExternalInterface 定义的showMessage 接收一个字符型参数,可这样写:
flashPlayer.showMessage("example message");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值