选择显示字体大小

flash mx 新的闪烁世界(第十天)

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()的状态


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons