您的位置:首页-> 网页设计-> Flash-> Flash MX 新的闪烁世界(第十天)

Flash MX 新的闪烁世界(第十天)
作者:画魔(Demon.S) 时间:2005-4-1  来自:www.dnvs.net  选择阅读文体:



Flash MX – 新的闪烁世界(第十天)

炎热的夏天正在悄然地袭击着容易受伤的深圳,导致本魔中午外出觅食的时候竟然都睁不开眼睛……紧张之后新周一也没什么事情可做,这个时候不写点东西才叫浪费青春。

Flash MX中在服务器/客户的数据处理/存储控制上下了一些功夫。简单而方便的loadVars对象我们在第二天就看到了其芳踪,XML/XmlSocket对象还是老瓶装旧药,Cookie对象也不过是测试环境的牺牲品,倒是新的SharedObject对象和LocalConnection对象让我看到MX闪亮的万丝千屡一瞬间(头发丝的高光部)。

通常,我们在Flash 5会有几种方法来存储我们用过的数据:如果在无Server的状态,我们可能用到FScommand+exec+EXE或者FScommand+Save+XML,适用于单机游戏和存放“Cookie”;如果存在Server,那么需要Loadvar/XML or XmlSocket Send连接服务器端程序写入服务器数据库保存,但在网络条件恶劣或者安全措施严谨的情况下,这样的方法可能造成重要数据的无法写入;而Flash MX的SharedObject则可以减缓服务器存储速度并有效解决此类问题。

mySO=new SharedObject(); //make a new SharedObject

SharedObject对象看起来更像是Cookie对象/MMSave方法和FScommand的Save的结合产物。在存储用户临时数据时我们可能经常使用到它,例如:

//main 1

i=10

while(--i){

var saveme=random(4); //change text here

var tmpData=SharedObject.getLocal("testMod");

if (tmpData.data.data==undefined
tmpData.data.data!=saveme){

trace("new data saved"+eval(tmpData.data.data=saveme)); //display & save

tmpData.flush(); //refresh data

}

trace(tmpData.data.data) //display result

trace("-------------------------------")

}

这个例子清楚地说明SharedObject的临时数据存储功能。首先,随机产生0-3的随机数作为待存数据,然后通过SharedObject的getLocal方法读取硬盘中文件为testMod.sol中的数据,判断内容里面名称为data的子值是否和待存数据相同或者根本无数据,条件成立则刷新存储构造数据data的data值并显示结果(“new data saved”)。

要点:

先覆盖原值,然后flush()一次(就好像其名——冲厕所)。

最后显示当前值,如果和原值相同,则不会显示new data saved,即没存入硬盘。(也没必要)(图1)



(图1,来个图,否则某些人会说不玩罗,程序好枯燥哦~……) 应用:

//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,但这个可以由用户自定义,甚至无限大。

通过这个例子,我们可以把这样的过程利用到网站访问历史、用户私人信息存储、游戏暂存/数据缓存等很多应用 存储结构:

就好像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://www.dreamworks.com/spirit,制作过程中深感此片还算不错,所以大家也到时捧场买一张电影片看下:)。

源文件下载:

http://www.dnvs.net/tutorial/flash_mx/day10.exe

http://www.fei7.com/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()的状态



上一篇:Flash MX一步步跟我Flash MX一步步跟我做——“幽灵情书”——“幽灵情书” 下一篇:用Flash 制作Winamp光谱柱的效果

GoogLe中搜索“Flash MX 新的闪烁世界(第十天)”相关内容...
百 度 中搜索“Flash MX 新的闪烁世界(第十天)”相关内容...
一 搜 中搜索“Flash MX 新的闪烁世界(第十天)”相关内容...

相关文章
Flash MX 新的闪烁世界(第九天)
Flash MX 新的闪烁世界(第八天)
Flash MX 新的闪烁世界(第七天)
Flash MX 新的闪烁世界(第六天)
Flash MX 新的闪烁世界(第五天)
Flash MX 新的闪烁世界(第四天)
Flash MX 新的闪烁世界(第三天)
Flash MX 新的闪烁世界(第二天)
Flash MX 新的闪烁世界(第一天)

DreamWeaver
Flash
经验技巧
LiveMotion
HTML/CSS
Firework
FrontPage
Golive
提升QQ等级 QQ挂机升级外挂
国内首发 韩国版QQ自定义头像
挖掘Windows XP系统安装盘中的神秘宝藏
初见photoshop8.0的庐山真面目!
BT下载速度之战:Bitcomet对决比特精灵
腾讯最新漏洞-------QQ红钻任你拿
Windows XP 的安装
如何制作万能DVD
浅谈Windows XP SP2补丁包的安装及使用
RM,RMVB转VCD
Flash MX 新的闪烁世界(第一天)
用Flash MX软件制作遥控小汽车
实例讲解flashMTV制作全过程(6)
Flash MX 新的闪烁世界(第十天)
用Flash MX制作新年贺卡
FlashMX经典实例-文字类:水波字
FLASH游戏制作精选实例教程
实例讲解flashMTV制作全过程(1)
Flash表单制作实例集锦(一)
用Flash制作不停转动的地球仪