不可见的 Flash:通过使用不可见的 Flash Player 增强 Web 应用程序
2010-07-09 00:00:00 来源:WEB开发网package{
import flash.external.ExternalInterface;
import flash.net.SharedObject;
public class JsHelper extends Sprite{
private const SO_NAME:String = "helperSo";
private const SAVE_LOCAL:String = "saveLocal";
private const READ_LOCAL:String = "readLocal";
public function JsHelper(){
ExternalInterface.addCallback(SAVE_LOCAL, saveLocal);
ExternalInterface.addCallback(READ_LOCAL, readLocal);
}
// functions omitted for brevity
}
}
清单 2 简单演示了向清单 1 中的 JsHelper 类添加的内容。主要的注意点是添加了一个显式构造函数。正如您所料,这个构造函数将在创建类的一个实例时得到调用。其中,使用 ExternalInterface API 将两个函数 saveLocal 和 readLocal 公开给 SWF 所嵌入的所有 Web 页面上的 JavaScript。addCallback 函数的第一个参数是字符串。JavaScript 客户端使用它作为名称识别函数。它与类中的函数名可能不同,但在该例中是相同的。第二个参数是一个函数闭包。与 JavaScript 一样,ActionScript 是函数语言,因此函数是一阶的,可以传递。这就是公开两个函数所需要做的。现在看看用于嵌入和访问 SWF 的 JavaScript。详见清单 3。
清单 3. 嵌入不可见 Flash
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Flash Helper for JavaScript</title>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
function writeFlash(){
var attrs = {id : "JsHelper"};
swfobject.embedSWF("JsHelper.swf", "flashContainer", "1", "1", "10.0.0",
"playerProductInstall.swf", null, null, attrs);
}
function save(name, value){
var helper = document.getElementById("JsHelper");
helper.saveLocal(name, value);
}
function load(name){
var helper = document.getElementById("JsHelper");
return helper.readLocal(name);
}
</script>
</head>
<body >
<div id="flashContainer"></div>
</body>
</html>
更多精彩
赞助商链接