文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

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

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

时间:2004/11/7 2:22:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            

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

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 Flash CS4基础入门 如何在Flash中打开一个定制的浏览器新窗口?学习ActionScript 3.0的6个好处几个小技巧精简Flash文件体积在Flash动画中添加“加为收藏”和“设为首页

人气排行 Flash游戏制作--小熊拼图用Flash实现几种镜头效果Flash制作动画知识:遮罩Flash如何做鼠标指针样式Flash制作环形文字Flash制作声情并茂的电子相册实例讲解flashMTV制作全过程(3)鼠标效果系列教程:游动的鱼