1.Js调用As3.0的函数,使用ExternalInterface.addCallback("callbackForJs",asFunction);
目的:操作网页页面时,去影响或改变加载到html页面的swf文件内的内容(代码).
参数说明:第一个参数"Register the alias"(注意,这里是字符串),为在as3.0定义的一个函数取个名字,该名字主要为第二个参数asFunction这个函数取个另外的名字,这个名字将在js当中用到,我们知道,在as3.0当中调asFunction这个函数对象只需要asFunction(),但是在js当中却需要通过第一个参数注册好的别名来调用,比如说callbackForJs就是asFunction这个as3.0的函数要在js当中访问时取的名字,在js当中callbackForJs(),其实就是调用asFunction().
AS3.0代码例:
public function TestWeb()
{
ExternalInterface.addCallback("forJsCallBack",closure);
}
/**当js调用forJsCallBack()时 将在swf的舞台上绘制一个随机颜色的小球*/
private function closure(w:int):void
{
this.graphics.beginFill(Math.random() * 0xffffff);
this.graphics.drawCircle(Math.random() *stage.stageWidth,Math.random() * stage.stageHeight,w);
}
Html代码示例:
asCallJs
<script language="JavaScript">
function hitFun()
{
var size = 50;
//这里的forJsCallBack是as3.0当中的注册的别名
document.getElementById("testID").forJsCallBack(size);
}
</script>
2.As3.0调用JS的函数,使用ExternalInterface.call("callbackForAs",参数);
目的:操作网页页面里加载的swf时,去影响或改变加载到swf的html页面的内容(代码).
参数说明:第一个参数是在js当中定义的函数名(注意是字符形式表示),其后是如果js定义的函数如果需要提供参数,就在第二个参数或之后给出.
AS3.0代码例:
public function TestWeb()
{
stage.addEventListener(MouseEvent.CLICK,onClick);
}
protected function onClick(event:MouseEvent):void
{
ExternalInterface.call("callbackForAs","I need u.","Successful visit.");
this.graphics.beginFill(Math.random() * 0xffffff);
this.graphics.drawCircle(0,0,200);
}
Html代码示例:
AsCallJs
<script language="JavaScript">
function callbackForAs(message,resault)
{
alert(message);
alert(resault);
}
</script>