关于使用SharedObject来缓存游戏图片或者swf文件资源到客户端本地的研究

本文探讨了使用SharedObject将游戏图片和SWF文件缓存到客户端本地的方法,旨在优化游戏加载速度和用户体验。通过URLStream获取资源的原始数据,利用SharedObject保存到本地,下次启动时直接读取缓存数据,还原为DisplayObject。文章提供了Cookie和BitmapUtil两个工具类的代码示例,用于实现数据的存储和读取。
摘要由CSDN通过智能技术生成

    目前市面上已经有很多游戏采用了把图片缓存到玩家客户端的做法,这种方法有利有弊,因为并不是所有的玩家都希望自己的电脑的某个角落被放入过多的缓存文件,久而久之造成电脑性能下降;但是总的来说这种技术还是好的:第一,webgame的总体资源也是有限的,不会有太大的容量占用,而且对于程序来说一般只缓存一些核心资源,比如使用很频繁的资源以及需要下载较长时间的大背景大图片或者容量稍大的swf文件等;第二,可以大幅度提升玩家第二次进入游戏的速度,某种意义上可以提升游戏体验度;

    好了,废话少说,下面直接说说怎么使用SharedObject来做到把图片或者swf文件缓存到客户端,并在第二次进入程序的时候直接使用缓存的数据还原成想要的原始图片或者swf文件;主要思想是:通过URLStream把显示对象加载进来获得其ByteArra的原始数据,然后通过shareObject把二进制保存到客户端的本地,那么下次进入程序的时候直接可以通过ShareObject获得上次保存的二进制数据,有了二进制数据,只需要通过Loader.loadByte()函数就可以把二进制数据转换成DisplayObject对象;

    1.首先我们使用SharedObject来写一个Cookie类:Cookie.as的代码如下:


// WEBGAME Confidential 
// Copyright 2011. All rights reserved. 
// 
// Cookie.as
// Summary // TODO Auto-generated summary stub
// Version 1.0
// Author txiejun
// Created Nov 4, 2011 10:46:36 PM

package aurora.store
{
	import flash.events.NetStatusEvent;
	import flash.net.SharedObject;
	import flash.net.SharedObjectFlushStatus;
	import flash.utils.getQualifiedClassName;
	
	/**
	 *	
	 * @author txiejun
	 * @contact txiejun@126.com
	 * @created Nov 4, 2011 10:46:36 PM
	 */
	public class Cookie
	{
		private var _name:String = null;
		private var _path:String = null;
		private var _shdobj:SharedObject;
		private var flushStatus:String = null;
		/**
		 *	minDiskSpace KB 空间的存储量 小于 minDiskSpace的数量将不会有提示框弹出
		 */	
		public var minDiskSpace:int = 0;
		
		public function Cookie(name:String,path:String=null,minDiskSpace:int=0)
		{
			_name = name;
			_path = path;
			this.minDiskSpace = minDiskSpace;
			_shdobj = SharedObject.getLocal(name,_path);
		}
		
		private function onFlushStatus(event:NetStatusEvent):void 
		{
			switch (event.info.code) 
			{
				case "SharedObject.Flush.Failed":
					trace(getQualifiedClassName(this)+".onFlushStatus() Error: Failed write SharedObject to disk."
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值