·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0应用SharedObject保存的使用技巧

时间:2014-02-17 09:19yangkd548
将本地永久共享对象立即写入本地文件。 如果不使用此方法,则 Flash Player 会在共享对象会话结束时(也就是说,在 SWF 文件关闭时,在由于不再有对共享对象的任何引用而将其作为垃圾回收时

在AS3的帮助文档中说:

flush():将本地永久共享对象立即写入本地文件。 如果不使用此方法,则 Flash Player 会在共享对象会话结束时(也就是说,在 SWF 文件关闭时,在由于不再有对共享对象的任何引用而将其作为垃圾回收时,或者在调用 SharedObject.clear() 或 SharedObject.close() 时),将共享对象写入文件。

以前做项目时,测试过,好像是不能保存的。这次测试似乎又能保存了,不知道为什么?我的测试代码如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
  3.     creationComplete="init()" > 
  4.     <mx:Script> 
  5.         <![CDATA[ 
  6.             import flash.utils.setTimeout; 
  7.              
  8.             private var _info:XML = new XML('<data ver="1.3"><item name="ywx" age="29" /></data>'); 
  9.              
  10.             private function init():void 
  11.             { 
  12.                 var tempSo:SharedObject = SharedObject.getLocal("test","/"); 
  13.                 tempSo.data.info = _info; 
  14.                  
  15.                 setTimeout(hoho,1000); 
  16.             } 
  17.              
  18.             private function hoho():void 
  19.             { 
  20.                 setTimeout(hoho,1000); 
  21.                 var tempSo:SharedObject = SharedObject.getLocal("test","/"); 
  22.                 trace(tempSo.data.info,"==CuPlayer.com="); 
  23.             } 
  24.         ]]> 
  25.     </mx:Script> 
  26. </mx:Application> 

在程序启动后,tempSo.data.info会保存一个xml对象,但没有调用过SharedObject的flush()方法,意味着info属性是没有保存到硬盘的sol文件里,此时关闭程序(关闭网页或者swf文件),将11-12行代码注释掉,再次编译运行,第22行输出还是有xml对象。就是说保存成功了。

不知道这个自动保存功能是不是真的可靠呢?能否加以利用,项目中现在的做法是没对SharedObject有一个操作,立即调用了flush方法,如果这个自动保存是可靠的,那么就是不是可以省去每次操作后对flush的调用了呢?……

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器