首先,本方法中,引用了as3 Zip库(国外人士已把:java.util.zip下的代码,重写成as3),快速,稳定,挺好用;
as3 zip.swc 原作相关网址
ICfgManager接口:
package interfaces
{
import flash.utils.ByteArray;
/**
* 数据配置管理类接口
* @author jave.lin
* @date 2013-7-20
*/
public interface ICfgManager{
/**加载配置*/
function load(bytes:ByteArray):void;
}
}
配置管理类:
package
{
import interfaces.ICfgManager;
import flash.utils.ByteArray;
import flash.utils.Dictionary;
import nochump.util.zip.ZipEntry;
import nochump.util.zip.ZipFile;
/**
* 配置管理器
* @author jave.lin
* @date 2013-7-8
*/
public class ConfigManager{
private static var configManager:ConfigManager;
/**物品配置管理*/
public static const itemCfgMgr:ItemCfgManager = new ItemCfgManager();
/**开服活动配置管理*/
public static const openServiceActivitiesCfgMgr:OpenServiceActivitiesCfgMgr = new OpenServiceActivitiesCfgMgr();
/**配置加载列表*/
private static const cfgEntryArr:Array = [
itemCfgMgr, "ItemConfig.xml",
openServiceActivitiesCfgMgr, "OpenServiceActivitiesConfig.xml"
];
/**加载配置*/
public static function load(bytes:ByteArray):void{//当然,这里的bytes,你如果加密了,那么这里得解密,爱怎么弄都可以
var zipFile:ZipFile = new ZipFile(bytes);
for (var i:int = 0; i < cfgEntryArr.length; i+=2){
var cfgMgr:ICfgManager = cfgEntryArr[i];
var fileName:String = cfgEntryArr[i + 1];
var bytes:ByteArray = zipFile.getInput(zipFile.getEntry(fileName));
cfgMgr.load(bytes);
}
}
}
}
外部调用该:ConfigManager这样即可:
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE, onLoadCom);
var url:String = "asset/cfg.zip"
urlLoader.load(new URLRequest(url));
function onLoadCom(e:Event):void{
ConfigManager.load(e.target.data);//这里调用
complete();
}
完事~~~