| 应用:
//prepare functions
soLoad=function(src){
return SharedObject.getLocal(src);
}
soSave=function(src,sdata){
var tmpData= SharedObject.getLocal(src);
for (var i in sdata) tmpData.data[i]=sdata[i];
trace(tmpData.getSize());
return tmpData.flush();
}
//from Demon.S function lib SharedObject.localDeleteAll
SharedObject.prototype.localDeleteAll=function(){
for(var i in this.data) delete this.data[i];
return this.flush();
}
//main 2
//init
var mySo="testMod";
var aryData={aritcle:"Flashmx new lighting
world day10",author:"Demon.S",date:"4/8/2002",from:"DnVsystem",url:"http://www.dnvs.net"}
//remote one:SharedObject.deleteAll(src);
//local one:clearn local data
var tempSO=SharedObject.getLocal(mySo);
trace("clearing....garbage:" + (tempSO.LocalDeleteAll()
? "cleaned" : "fail in clearning
local data"));
//load & save
if (soSave(mySo,aryData) && aryData){
var mainData=soLoad(mySo);
if (mainData) for(var i in mainData.data) trace(i+":"+mainData.data[i]);
else trace("Fail in save ");
}
else trace("No Data");
这个例子基本上覆盖了SharedObject的本地应用的全部常用用法,程序开始的时候我假设不需要上次的记录,所以我要清除那些东西,所以使用了localDeleteAll()(from
Demon.S function lib)方法来清空我要写的文件;接着判断一些必要的纠错,并把已经准备好的数据Object对象aryData用自定义的soSave写入目标mySo。

(图2)
这样我们就实现了一个简单过程,其中getSize方法可以获取sharedObject的文件大小,在Flash
MX的默认是100k,但这个可以由用户自定义,甚至无限大。
通过这个例子,我们可以把这样的过程利用到网站访问历史、用户私人信息存储、游戏暂存/数据缓存等很多应用。
|