当前位置:软件学习 > Flash >>

体验Flash MX(10):服务器/客户数据存储控制

Flash MX在服务器/客户的数据处理/存储控制上下了一些功夫,其中简单而方便的loadVars对象我们在第二天就看到了其芳踪,XML/XmlSocket对象还是老瓶装旧药,Cookie对象也不过是测试环境的牺牲品,倒是新的SharedObject对象LocalConnection对象让我看到Flash 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);

  源文件下载:

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



上一个:Macromedia宣布推出MX产品组件
下一个:体验Flash MX(9):Button对象

更多Flash疑问解答:
今天教大家学会用U5制作成翻页相册
Flash MX 2004 ActionScript图文教程(九)
Flash MX 2004 ActionScript图文教程(八)
Flash MX 2004 ActionScript图文教程(七)
Flash MX 视频导入功能详解
Flash5 画任意直线教程
FLASH -- 关于变量的问题FLASH -- 关于变量的问题
Flash本地加密
flash场景之间相互跳转的实现方法
Flash那样动感十足制作PPT按钮跟我来
Flash Mx使用技巧十二则
使用Flash mx制作旋转的时钟效果
PowerPoint中插入Flas易做图的方法
用FlashMX制作拖动悬浮窗口
在Flash中巧妙替换字体
Dreamweaver
Fireworks
FrontPage
Flash
Photoshop
Coreldraw
Excel
Word
Powerpoint
outlook
wps
AfterEffects
3D MAX
Director
Authorware
PremierePro
Foxmail
Maya
ISA
会声会影
其它软件
AutoCAD
如果你遇到软件学习难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,