SharedObject自动保存问题

在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,"===");
23 }
24 ]]>
25 </mx:Script>
26 </mx:Application>

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

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

posted @ 2011-10-16 13:09  ywxgod  阅读(537)  评论(0编辑  收藏  举报