webgame怎么缓存SWF和数据的

今天在论坛里面看到这个话题,我们时常也会遇到,比如弹弹堂里面第一次进入游戏会有一个提示,说第一次加载慢点,以后就不用下载直接进游戏了,这里面的具体是怎么实现的?下面我大概分析一下...

这 里的缓存包括SWF本身文件的缓存和数据缓存,SWF文件缓存这个主要是通过浏览器来实现的,不需要我们专门写代码来来实现,在一个就是数据缓存了,这里 面的数据一般是静态的数据,不会和后台产生的交互的,比如我们的游戏里面有一些加载素材的地址是专门写到xml里面的,还有其他的一些配置信息都会用 xml,这些xml里面的数据不会和后天产生交互的,一般情况下也是不会变的,这样我们可以通过ShareObject把数据存放到本地,下一次进入游戏 时不用加载这些数据了,首先我们了解一下ShareObject:

Flash的本地共享对象是在用户机器上实现持久化存储的数据集合。Flash可以从程序中控制这些数据集合,向其中存入或者从中读取大量的信息数据。

使用SharedObject对象

   对象说明:SharedObject(共享对象)可以看作是小型的数据库,我们可以用它来存储任何Flash支持的数据类型,比如数字、字符串、数组和 对象等等。SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)。本地型共享对象的扩展名为.sol。
  用法:下面是关于本地型共享对象的部分最主要的方法、属性的介绍。
1)getLocal(name) 方法  “name”参数共享对象名,返回共享对象的参照
2)flush      方法  立即把数据写入共享对象
3)data      属性  存取共享对象数据的通道

只需要掌握以上这些知识就可以用共享对象来存取外部数据了。
SharedObject.getLocal(objectName [, localPath])
其中objectName是该共享对象的名字,localPath即共享对象所在路径。

// 创建一个本地保存数据的对象
var cookie:Object = SharedObject.getLocal("cookie");

方 法会在默认的路径下生成一个cookie.sol文件。文件的默认大小不能超过100k,当然可以通过鼠标右击flash窗口,选择设置来管理或者禁用您 的本地共享对象。可以让每个flash独立使用自己的SharedObject,当然也可以做一个全域的SharedObject让所有的swf使用,只 要给localPath 赋值 "/"。
在win2k和 win xp中,默认路径为C:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects (username为机器的用户名)

每个对象都会有一个只读属性data,用来存储被存储到 “数据特性”中的对象的属性,这些属性可以共享/存储,每一个属性可以是各种基础数据类型(数组,数字布尔值等)对象。现在cookie已经存储在 SharedObject中了,以后你可以通过对SharedObject数据属性的存取来实现对cookie的存取。例如:

cookie.data.name = "张三";
cookie.data.password = "123456";
cookie.data.rememberPassword = true;

共享对象的写入会在应用程序退出时自动执行,也可以通过cookie.flush()强制写入。

  示例:按方法一设置场景,然后输入下面的代码。


Flex中的ShareObject类似于传统的cookie,但又具有传统cookies所不具有的优点:

1.默认情况下,不会过期
2.默认情况下,每个ShareObject的大小限制为100KB;
3.可以存储简单数据类型 :String,Array,Data等;
4.存储于程序制定的位置[在User的Home Directory中];
5.从不在客户端与服务器间传递

1.创建一个Shared Object
  var NoteManagementShareObject:SharedObject = SharedObject.getLocal("NoteManagementShareObjectSave");
2.指定位置:
var NoteManagementShareObject:SharedObject = SharedObject.getLocal("NoteManagementShareObjectSave", "/");
3.保存数据
以保存XML数据为例:

  public function save(givenXML:XML = null):void{
   var NoteManagementShareObject:SharedObject = SharedObject.getLocal("NoteManagementShareObjectSave");
   NoteManagementShareObject.data.catandnote = givenXML;
   NoteManagementShareObject.flush();
  }
具体用时再去查一下API和相关资料。

你可能感兴趣的:(游戏,xml,object,服务器,Flash,存储)