快速业务通道

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

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-14

 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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号