定义自己的二进制配置文件

首先我们要准备用于读写的数据模型:

数据模型要实现

decode (用于解码)  

encode(用于写入)  


	public class Vo_history
	{
		public var cmd:int;
		public var data:Array;
		public var des:String;
		public var type:String;
		public var time:int;
		public var num:uint = 1;
		
		public function decode(info:Array):void
		{
			cmd = info[0];
			data = info[1];
			des = info[2];
			type = info[3];
			time = info[4];
			num = info[5];
		}
		
		public function encode():Array
		{
			var info:Array = [];
			info.push(cmd);
			info.push(data);
			info.push(des);
			info.push(type);
			info.push(time);
			info.push(num);
			return info;
		}
		
		public function clone():Vo_history
		{
			var vo_clone:Vo_history = new Vo_history();
			vo_clone.cmd = this.cmd;
			vo_clone.des = this.des;
			vo_clone.type = this.type;
			vo_clone.time = this.time;
			vo_clone.num = this.num;
			
			//数组拷贝
			var byteArr:ByteArray = new ByteArray();
			byteArr.writeObject(this.data);
			byteArr.position = 0;
			vo_clone.data = byteArr.readObject();
			
			return vo_clone;
		}
	}

原理是利用ByteArray中的writeObject写入数组进行保存

		public function toByte():ByteArray
		{
			var byte:ByteArray = new ByteArray();
			var saveArr:Array = [];
			for each(var child:historyItem in SeachList)
			{
				var hvo:Vo_history = child.vo;
				saveArr.push(hvo.encode());
			}
			
			byte.writeObject(saveArr);
			return byte;
		}

然后保存文件

		private function onSaveFile(evt:MouseEvent):void
		{
			var file:FileReference = new FileReference();
			file.save(model.toByte(), "historyList.gm");
		}

打开文件

		private function onOpenFile(evt:MouseEvent):void
		{
			var docFilter:FileFilter = new FileFilter("DataFiles (*.gm)", "*.gm");
			openFile.browse([docFilter]);
		}
		
		private function addHandler(e:Event):void
		{
			openFile.load();
		}
		
		private function comHandler(e:Event):void
		{	
			if (e.target.type == ".gm")
			{
				var byteArray:ByteArray = e.target.data;
				model.parseByte(byteArray);
			}
		}

解析二进制文件

	        //解析数据
		public function parseByte(byte:ByteArray):void
		{
			var saveArr:Array = byte.readObject();
			for each(var info:Array in saveArr)
			{
				var hvo:Vo_history = new Vo_history();
				hvo.decode(info);
				this.append(hvo);
			}
		}


当然也可以自己定义ByteArray的写入和写出方法,这个跟服务器和客户端通讯的道理是一样的。

Tips : Dictionary 和 Array 一样是可直接写入和写出的表。 

Tips2:利用二进制解析某些文件也可以把数据保存成你想要的表。

Tips3:利用Excel解码编码库可以把Excel里面的行和列写成二维Dictionary供游戏中读取使用 

一般是key为表的第一列 行为value 通过Excel解码数据然后保存在一个一个Array行数据在Dictionary里面。


附带一个SWF内嵌二进制的代码:

		[Embed(source="../bin-debug/assets/robotAction.gm",mimeType="application/octet-stream")]
		public var robotData:Class;  



                var robtAction:ByteArray = new robotData(); 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值