ActionScript与javascript相互调用

一、ActionScript与javascript相互调用(adobe flash cs4)

    1、概述

              如果想使得js与as能够进行通讯,我们需要用到flash中的一个类:flash.external.ExternalInterface ,

          通过他您可以在 Flash 运行时中使用 HTML 页面中的 JavaScript 调用 ActionScript 函数。

          ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。

          此功能替代 fscommand() 方法。


         ExternalInterface中一些API的简介:

             公有属性:

  属性 由以下参数定义
    available : Boolean
[静态] [只读] 表示此播放器是否位于提供外部接口的容器中。
ExternalInterface
    marshallExceptions : Boolean = false
[静态] 表示外部接口是否应尝试将 ActionScript 异常传递到当前浏览器并将 JavaScript 异常传递到播放器。
ExternalInterface
    objectID : String
[静态] [只读] 在 Internet Explorer 中返回 object 标签的 id 属性,或者在 Netscape 中返回 embed 标签的 name 属性。
ExternalInterface

           公有方法:

  方法 由以下参数定义
   
addCallback(functionName: String, closure: Function): void
[静态] 将 ActionScript 方法注册为可从容器调用。
ExternalInterface
   
call(functionName: String... arguments): *
[静态] 调用由 SWF 容器公开的函数,传递零个参数或传递多个参数。
ExternalInterface

    1、Javascript调用 Actionscript中的函数

               需要使用到方法:

                  addCallback();

                   将 ActionScript 方法注册为可从容器调用。成功调用 addCallBack() 后,播放器中注册的函数可由容器中的 JavaScript 或 ActiveX 代码调用。

          具体案例:

as代码:
package{
  //引入包
  import flash.external.*;
  import flash.display.*;
  public class Test extends Sprite{
       //定义供外部js调用的函数
      public function text():void{
          trace("====text=====");
      }
      public function text2(msg:String):void{
          trace("====text2==: "+ msg);
      }

    public function Test():void{
        //将定义的函数进行注册,使得这些函数能够供外部调用
        ExternalInterface.addCallback("text",text);
        ExternalInterface.addCallback("text2",text2);
     }
  }
}


html代码:

<!--引入swf-->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
				id="flashObject"
				codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
				width="400" height="440">
				<param name="movie" value="flash/ShiBieFunction.swf" />
				<param name="quality" value="high" />
				<param name="wmode" value="transparent" />
				<embed src="flash/ShiBieFunction.swf"
					type="application/x-shockwave-flash" width="400" height="440"></embed>
			</object>

js代码:
function thisMovie(movieName){
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
        return (isIE) ? window[movieName] : document[movieName];	
	}
//flashObject为页面中加入swf标签的id,text为在as中与调用函数对应所取的函数名称
thisMovie("flashObject").text();

thisMovie("flashObject").text2("message");

 

2、actionscript调用javascript函数

  需要用到的函数是:call();

调用由 SWF 容器公开的函数,传递零个参数或传递多个参数。如果该函数不可用,调用将返回 null;否则,它返回由该函数提供的值。

        具体案例:

js代码:

//定义供as调用的函数
function show(){
  alert("===show===");
}

function onShow(msg){
   alert("==onShow==: "+msg);
}

as 代码:

//调用不带参数的函数
ExternalInternal.call("show");

//调用带参数的函数
ExternalInternal.call("onShow","param");


当然html中同样需要加入swf,如同上面案例一般。
     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值