正如strah 所说,通过ExternalInterface 和SharedObject 的组合,您可以在Flash 中保存数据,类似于在Javascript 中使用cookie 来保存数据。你问,你是怎么做的?
首先,您需要编写使用一个或多个SharedObjects 来持久化数据的ActionScript 代码:
//Obtain the SharedObject named "cookie", procuring a reference
//to the member Object containing its persisted data
var locusLSO:SharedObject = SharedObject.getLocal("cookie");
var lsoData:Object = locusLSO.data;
/////
//Establish a pairing in locusLSO between some key and value
lsoData["key"] = "value";
//Immediately serialize the data contained in locusLSO to its linked file
var statusStr:String = locusLSO.flush();
其次,您需要将 ActionScript 代码封装在一个方法中,然后将该方法注册为其父应用程序的 ExternalInterface 的一部分:
function storeData(/*param1, param2, ... */):void {/*code*/}
ExternalInterface.addCallback("storeData");
第三,您需要编译您的 Actionscript 应用程序(您的代码),并在您的 HTML 中创建一个引用生成的 .swf 文件的元素。
然后,假设上述 HTML 元素表示为名为 flashDOMElement 的 DOMElement,您可以使用 DOMElement 调用您的方法:
flashDOMElement.storeData(/*arg1, arg2, ... */);
如果您不想经历所有这些麻烦,请查看BakedGoods;它是一个 Javascript 库,它建立了一个统一的接口,可用于在所有本地和一些非本地存储设施(包括 Flash 本地共享对象)中进行常见的存储操作。
有了它,创建一个 LSO 可以通过以下简单的代码来完成:
bakedGoods.set({
data: [{key: "key", value: "value"}],
storageTypes: ["flash"],
complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});
检索和删除数据同样简单。相信我,我会知道的;我是它的维护者:)