在JavaScript与Flash的通信一文中我介绍了利用ExternalInterface来实现的JS与AS双向通信,有朋友跟我提出疑问如果AS或者JS中都定义了同名函数,那么会造成方法覆盖吗?这的确是个需要考虑的问题,通过测试证明,即使出现了同名方法的定义,它们也是相互独立的,不会造成方法覆盖。
一、AS调用JS方法时出现同名方法(查看实例)
AS代码如下:
import flash.external.*;
var v = ExternalInterface.available;
t_btn.onRelease = function (){
//调用JS函数
var s = ExternalInterface.call("say","JS函数调用成功!")
//调用AS本地函数
s += say("\n本地函数调用成功!");
r_txt.text = s;
}
//AS本地函数
function say(s){
return s;
}
HTML代码:
//定义一个JS函数
function say(txt){
return txt;
}
可以看到在JS中定义了一个say方法供AS调用,现在我们在AS中定义了一个同名的say方法来验证它们是否会出现覆盖。结果证明它们不会覆盖,都工作得很好。(PS:不错~)
二、JS调用AS方法时出现同名方法(查看实例)
AS代码如下:
//导入包
import flash.external.*;
//提供JS访问的函数名
var _method:String = "say";
//指定本地函数中this变量的作用域,可设置为null留空
var e_area:Object = null;
//AS内部函数名
var method:Function = say;
//将函数注册到容器列表
var wasSuccessful:Boolean = ExternalInterface.addCallback(_method, e_area, method);
//查看注册是否成功
if(wasSuccessful){
result_txt.text = "函数注册成功";
}
//本地的函数
function say(txt:String) {
result_txt.text = txt;
}
HTML代码如下:
<div> |
通过上面的两个例子我们可以得出结论在使用ExternalInterface时即使定义了同名方法,也不会造成方法覆盖,你大可放心使用。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |