WEB开发网
开发学院图形图像Flash 如何调用注册的ActionScript函数[as与js交互] 阅读

如何调用注册的ActionScript函数[as与js交互]

 2012-02-06 12:12:31 来源:本站整理   
核心提示:ExternalInterface API 允许注册ActionScript 函数, 以被JavaScript 调用,如何调用注册的ActionScript函数[as与js交互],使用静态方法addCallback( ) 注册ActionScript函数,addCallback( ) 方法接收两个参数:第一个参数为St

ExternalInterface API 允许注册ActionScript 函数, 以被JavaScript 调用。使用静态方法addCallback( ) 注册ActionScript函数。addCallback( ) 方法接收两个参数:第一个参数为String类型的函数名,浏览器将借此名称得知要调用的函数,第二参数为浏览器调用定义的函数名时要执行的实际ActionScript函数。下面的例子注册了函数displayMessage ,在JavaScript中的别名为showMessage:
 

  1. 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代码用户检测播放器类型:
 

  1. <script language="JavaScript"> 
  2. var flashPlayer;  
  3. function detectFlashPlayer( ) {  
  4. if(navigator.appName.indexOf("Microsoft") != -1) {  
  5. flashPlayer = window.objectId;  
  6. }  
  7. else {  
  8. flashPlayer = window.document.embedName;  
  9. }  
  10. }  
  11. </script> 

下一步,在<body>的onLoad属性中调用detectFlashPlayer( ) 函数:
 

  1. <body onLoad="detectFlashPlayer"> 

变量包含当前Flash播放器的对象引用。
  可通过flashPlayer 变量来调用注册的ActionScript 函数, 例如, 如果注册函数的别名为showMessage,用下面的语句进行调用:
 

  1. flashPlayer.showMessage( ); 

还可以传递参数,如果ExternalInterface 定义的showMessage 接收一个字符型参数,可这样写:
 

  1. flashPlayer.showMessage("example message"); 

Tags:如何 调用 注册

编辑录入:coldstar [复制链接] [打 印]
赞助商链接