ExternalInterface:让Flash和JavaScript相互通信的有效方式
如果你是一个网站开发者或者游戏开发者,你一定知道Flash和JavaScript这两种技术。这两种技术都有各自独特的优点和应用场景,但它们之间的通信常常是一个问题。在Flash和JavaScript之间建立通信需要使用一种叫做ExternalInterface的技术,它是一种强大的方式,可以让Flash和JavaScript之间相互通信。在本文中,我们将深入了解ExternalInterface的优点、应用场景和用法,以便您更好地理解这种技术。
一、ExternalInterface 的优点
ExternalInterface是一种强大的技术,可以让Flash和JavaScript之间相互通信。这种技术有很多重要的优点,包括:
1、可靠性高:ExternalInterface是一种非常可靠的技术,它可以确保Flash和JavaScript之间的通信始终正常进行。
2、灵活性强:ExternalInterface非常灵活,可以应用于多种应用场景和开发环境。
3、易于使用:ExternalInterface非常易于使用,只需要几个简单的步骤就可以建立起Flash和JavaScript之间的通信。
二、ExternalInterface 的应用场景
ExternalInterface的应用场景非常广泛,其中一些主要的应用场景包括:
1、多媒体应用程序:ExternalInterface可以帮助开发者在Flash和JavaScript之间建立通信,以便建立多媒体应用程序。
2、游戏开发:ExternalInterface可以用于游戏开发,以建立游戏引擎和JavaScript之间的通信,以实现游戏的交互性和动态性。
3、网站开发:ExternalInterface可以帮助网站开发者在Flash和JavaScript之间建立通信,以便在网站上实现动态效果和交互性。
三、ExternalInterface 的用法
ExternalInterface的用法非常简单,只需要遵循以下步骤:
1、创建一个ActionScript函数,用于与JavaScript通信。
2、使用ExternalInterface.addCallback方法将ActionScript函数添加到JavaScript中。
3、JavaScript中调用ActionScript函数时,可以使用ExternalInterface.call方法。
4、Flash会将数据作为参数传递到ActionScript函数中。
下面我们来看一个基本的例子:
ActionScript:
function testFunction(data:String):String
{
return "Hello " + data;
}
ExternalInterface.addCallback("testFunction", testFunction);
JavaScript:
var result = swfObject.testFunction("World");
上面的例子中,ActionScript函数名为testFunction,它有一个字符串类型的参数,返回一个字符串类型的值。然后使用addCallback方法将ActionScript函数添加到JavaScript中。在JavaScript中,使用ExternalInterface.call方法调用ActionScript函数,在调用时传递“World”作为参数。最后,Flash会将数据作为参数传递到ActionScript函数中,并返回“Hello World”。最后,JavaScript获得返回值并将其存储在变量result中。
综上所述,ExternalInterface是一种非常有用的技术,可以让Flash和JavaScript之间相互通信。这种技术适用于多种应用场景和开发环境,且使用起来非常简单。如果您是网站开发者或游戏开发者,那么学习和掌握ExternalInterface技术是非常有必要的。
【前言】
在Web开发中,常常需要与Flash交互,实现双向传值、调用Flash中的函数等功能。这时候,ExternalInterface就是一个非常重要的工具。那么,externalinterface怎么样呢?接下来,我会详细介绍它的原理以及使用方法。
【要素1】ExternalInterface的原理
ExternalInterface是Flash与JS之间的桥梁。它能够让JS调用Flash中的函数,也能够让Flash调用JS中的函数。这个原理是基于两个关键点实现的:
1.浏览器安全机制
当两个不同域名下的页面进行通信时,浏览器认为可能存在安全问题,因此会限制通信。为了解除这个限制,需要在Flash中进行配置:在Flash中要调用JS函数时,需要在HTML页面中嵌入一段JavaScript代码,将允许通信的域名进行注册。
2.JS函数调用方式
JS调用Flash中的函数时,需要指定一个函数名,并且传递参数。Flash中的该函数必须使用ExternalInterface.addCallback()进行注册,此时必须指定函数名及对应的处理函数。当JS调用函数时,该函数会被自动触发执行,并将返回结果传递给JS。
【要素2】ExternalInterface的使用方法
在使用ExternalInterface时,需要注意以下几点:
1.在HTML页面中注册允许通信的域名:
```javascript
var flashVars = {};
flashVars.parm1 = "1";
var params = {};
params.allowScriptAccess = "always";
params.quality = "high";
params.bgcolor = "#FFFFFF";
var attributes = {};
attributes.id = "flashContent";
attributes.name = "flashContent";
swfobject.embedSWF("flash.swf", "flashContent", "500", "350", "9.0.0", "expressInstall.swf", flashVars, params, attributes);
```
2.在Flash中注册要调用的函数:
```actionscript
function init(){
//注册外部可调用函数
ExternalInterface.addCallback("functionName",function(){
//处理逻辑
//向JS回传值
ExternalInterface.call("callback", result);
});
}
```
3.在JS中调用Flash中的函数:
```javascript
document.getElementById("flashContent").functionName("param1");
```
以上就是ExternalInterface的使用方法,通过上述步骤,我们可以轻松地实现Flash与JS之间的双向调用、传值等功能。
【要素3】ExternalInterface的注意事项
在使用ExternalInterface时,需要注意以下几点:
1.使用前需要判断
在JS中调用Flash中的函数时,需确保Flash完全加载后再调用。因为Flash未完全加载完成,则不支持函数调用,会导致JS调用失败。
```javascript
if(flashLoaded){
//调用函数
}else{
setTimeout(function(){
jsFunc();
},100);
}
```
2.释放内存
Flash与JS都需要占用内存,因此在使用ExternalInterface时,需要注意及时释放内存,避免对浏览器性能造成影响。
```javascript
function releaseMemory(){
if (window.ActiveXObject){
for (var i in window){
try{
window[i] = null;
}catch(e){}
}
}
setTimeout(function(){
collectgarbage();
},100);
}
```
【结语】