
Flash MX – 新的闪烁世界(第十天)
炎热的夏天正在悄然地袭击着容易受伤的深圳,导致本魔中午外出觅食的时候竟然都睁不开眼睛……紧张之后新周一也没什么事情可做,这个时候不写点东西才叫浪费青春。
Flash MX中在服务器/客户的数据处理/存储控制上下了一些功夫。简单而方便的loadVars对象我们在第二天就看到了其芳踪,XML/XmlSocket对象还是老瓶装旧药,Cookie对象也不过是测试环境的牺牲品,倒是新的SharedObject对象和LocalC;
var aryData=http://www.dedecms.com/web-art/pingmianshejiruanjian/Flash/20030521/{aritcle:"Flashmx new lighting world day10",author:"Demon.S",date:"4/8/2002",from:"DnVsystem",url:"http://dnvs"}
//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=http://www.dedecms.com/web-art/pingmianshejiruanjian/Flash/20030521/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,但这个可以由用户自定义,甚至无限大。
通过这个例子,我们可以把这样的过程利用到网站访问历史、用户私人信息存储、游戏暂存/数据缓存等很多应用存储结构:
就好像MX的公用Include路经一样,SharedObject的存储路经也很十分的规矩:主根目录在Application Data\Macromedia\Flash Player\内,存放本机数据的数据都会在localhost目录中出现,其他网站的数据都会在根目录以域名格式的文件夹出现,例如上面我们的例子,我在桌面上做的文件就会放在:localhost\Documents and Settings\demon.UDS\Desktop\day10.swf。
存储格式不是很复杂,提取的时候按照特定的规定简单的Split截取文件字符并打散成Object,而且数据虽然没有加密,但这样可以加快提取速度。
存储极限:
在Flash MX中引入的Settings面板有效的解决了部分安全问题,可由用户自己控制Camera和Microphone并可控制SharedObject的大小,方法:
System.showSettings(1);
啊,一口气狂打出来,手指都麻了……SharedObject,I love this shit!最后,插点广告:DreamWorks的最新动画大片Spirit就要出世,其官方网站是我Leading的超级无敌邪恶无比Flash必死恶魔组负责制作:http://dreamworks/spirit,制作过程中深感此片还算不错,所以大家也到时捧场买一张电影片看下:)。
源文件下载:
http://dnvs/tutorial/flash_mx/day10.exe
http://fei7/demons/fla/day10.zip
Tips:
System.showSettings()的用法:
System.showSettings(0) //显示Microphone/Camera允许控制;
System.showSettings(1) //显示SharedObject存储限制;
System.showSettings(2) //显示Microphone控制;
System.showSettings(3) //显示Camera控制。
若超出0-3范围时,例如负数和大于3的数则会Return错误,并保持上次showSettings()的状态(出处:风闪网路学院)
欢迎您访问www.5ucms.org