Flash学习笔记之XmlManager加载策略
来源:互联网 发布:excel数据在另一列分组 编辑:程序博客网 时间:2024/06/05 22:30
1.读取config/config.xml完毕<?xml version="1.0" encoding="UTF-8"?>
2.SysConfig.initConfigXml(new XML(e.target.data));SysConfig.configXml保存起来。
3.初始化initGame--XmlManager.getInstance().initRoleXml(){ var configXml:XML = SysConfig.getConfigXml(); 取值
<role> <xml> <item title="" size="557" key="serverinfo">config/serverinfo</item> </xml> <swf> <item title="" size="557" key="">login/CrRole.swf</item> </swf> </role>
}
4.把值保存在 中XmlManager.getInstance().addXml(aimXml,XML(xmlLoader.data));xmlPool池中
5.ssetManager.getInstance().initRoleSwf();预加载
6,进入场景时候: XmlManager.getInstance().initSceneXml();{<xml title=""> <item title="" size="19689" key="boyavatar">config/boyavatar</item> <item title="" size="37242" key="boypart">config/boypart</item> <item title="" size="16136" key="girlavatar">config/girlavatar</item> <item title="" size="31825" key="girlpart">config/girlpart</item> <item title="" size="13909" key="monster">config/monster</item> <item title="" size="1629" key="skill">config/skill</item> <item title="" size="345" key="itemInfo">config/itemInfo</item> <item title="npc" size="3274" key="npcavatar">config/npcavatar</item> <item title="" size="1321" key="effect">config/effect</item> </xml>把值保存在 中XmlManager.getInstance().addXml(aimXml,XML(xmlLoader.data));xmlPool池中}
7.AssetManager.getInstance().initSceneSwf()预加载
8.XmlManager.getInstance().initXml();{ avatar[0] = getXml("boyavatar"); part[0] = getXml("boypart"); avatar[1] = getXml("girlavatar"); part[1] = getXml("girlpart"); monster = getXml("monster"); npcavatar = getXml("npcavatar"); effect = getXml("effect"); skillConf = initXmlToObj(getXml("skill"),"@id");
//xmlPool中去取值初始化 public function getXml(key:String):XML{ if(xmlPool[key] != undefined){ return xmlPool[key]; } return null; }
}
package mmo.manager {import flash.events.EventDispatcher;import flash.utils.Dictionary;import mmo.asset.loader.ILoader;import mmo.asset.loader.XmlLoader;import mmo.config.SysConfig;import mmo.datastruct.HashMap;public class XmlManager extends EventDispatcher{private static var instance:XmlManager = null;public static const SERVERINFO:String = "serverinfo";public static var resourceMap:HashMap=new HashMap();private var xmlPool:Dictionary = null;public var taskDialogueConf:Object;public var taskConf:Object;public var npcConf:Object;public var itemConf:Object;public var goodsConf:Object;public var goods:Object;public var channelConf:Object;public var transferConf:Object;public var shops:Object;public var serverinfo:XML;public var avatar:Vector.<XML> = new Vector.<XML>(2);public var part:Vector.<XML> = new Vector.<XML>(2);public var monster:XML;public var npcavatar:XML;public var effect:XML;public var resource : XML;//public var skillConf:Object;public var skill : Object;public function XmlManager(){xmlPool = new Dictionary();//trace(SysConfig.getConfigXml());}public static function getInstance():XmlManager{if(instance == null){instance = new XmlManager();}return instance;}public function initRoleXml():ILoader{var xmlMap:HashMap = new HashMap();var configXml:XML = SysConfig.getConfigXml();for each(var config:XML in configXml.resource.role){//trace(config);for each(var item:XML in XMLList(config.xml).children()){//trace(item.@key+"_"+item.text()+"_"+item.@title);xmlMap.put(String(item.text()), String(item.@key));resourceMap.put(String(item.text()),String(item.@title));}}return loadXML(xmlMap);}public function initSceneXml():ILoader{var xmlMap:HashMap = new HashMap();var configXml:XML = SysConfig.getConfigXml();for each(var config:XML in configXml.resource.scene){//trace(config);for each(var item:XML in XMLList(config.xml).children()){//trace(item.@key+"_"+item.text()+"_"+item.@title);xmlMap.put(String(item.text()), String(item.@key));resourceMap.put(String(item.text()),String(item.@title));}}return loadXML(xmlMap);}private function loadXML(xmlMap:HashMap):ILoader{var xmlLoader:XmlLoader=new XmlLoader(xmlMap);return xmlLoader;}/*public function isNeedLoadXml():Boolean{return xmlMap.keys().length > 0;}*/public function initXml():void{avatar[0] = getXml("boyavatar");part[0] = getXml("boypart");avatar[1] = getXml("girlavatar");part[1] = getXml("girlpart");monster = getXml("monster");npcavatar = getXml("npcavatar");effect = getXml("effect");resource = getXml("resource");//skillConf = initXmlToObj(getXml("skillInfo"),"@id");skill = initXmlToObj(getXml("skill"),"@skillId");itemConf = initXmlToObj(getXml("itemInfo"),"@id");taskDialogueConf = initXmlToStringObj(getXml("taskDialogue"),"@id");taskConf = initXmlToObj(getXml("task"),"@id");}public static function initXmlToStringObj(data:XML,keyName:String):Object{var obj:Object = new Object();for each(var item:XML in data.elements()){obj[String(item[keyName])] = item;}return obj;}public static function initXmlToObj(data:XML,keyName:String):Object{var obj:Object = new Object();for each(var item:XML in data.elements()){obj[int(item[keyName])] = item;}return obj;}public function addXml(key:String,value:XML):void{if(xmlPool[key] == undefined){xmlPool[key] = value;}}public function getXml(key:String):XML{if(xmlPool[key] != undefined){return xmlPool[key];}return null;}}}
package mmo.config {import flash.display.Stage;import flash.system.ApplicationDomain;import flash.system.LoaderContext; public class SysConfig { public static var hasInit:Boolean = false;public static var hasInitSystem:Boolean = false; private static var configUrl:String = "config/config.xml"; private static var configXml:XML; public static var path:String = "F:/assets/"; public static var parameters:Object; public static var version:String; public static var session:String; public static var DEBUG:int = 1; public static var RELEASE:int = 0; public static var loadType:uint = DEBUG; public static var runType:uint = 0; public static var logType:uint = 0; public static var EDType:Boolean = false; public static var FNType:uint = 0; public static var funcList:Array = []; public static var stage:Stage; public static var hasIp:Boolean; public static var ip:String; public static var port:int; public static var policyport:int; public static var loaderContext:LoaderContext;public static var roleSize:uint = 81920;public static var allSize:uint = 2846720; public static var loadSize:uint = 0; public static var reckonTime:uint = 20000; public static function initRunDomain():void{ loaderContext = new LoaderContext(); loaderContext.checkPolicyFile = false; loaderContext.applicationDomain = ApplicationDomain.currentDomain; } public static function initConfigXml(xml:XML):void{ hasInit = true; configXml = xml; version = String(configXml.version); loadType = int(configXml.loadType); runType = int(configXml.runType); logType = int(configXml.logType); EDType = int(configXml.EDType)!=0 ? false : true; FNType = int(configXml.FNType); if (FNType == SysConfig.DEBUG){ funcList = String(configXml.FNList).split(";"); }; if (runType == SysConfig.DEBUG){ session = configXml.session.toString(); }; } public static function getConfigXml():XML{ return configXml; } public static function get loadEncryption():Boolean{ switch (loadType){ case SysConfig.DEBUG: return false; case SysConfig.RELEASE: return true; }; return (true); } public static function toRandom(url:String):String{ return url + "?v=" + Math.random(); } public static function toSession(url:String):String{ return url + "?v=" + SysConfig.session; } public static function toVersion(url:String):String{ return url + "?v=" + SysConfig.version; } public static function getConfigUrl():String{ return SysConfig.path + toRandom(configUrl); } public static function getMainUrl():String{if(!loadEncryption){var loaderURL:String = stage.loaderInfo.loaderURL;//trace(loaderURL.substr(0,loaderURL.lastIndexOf("\\")+1));loaderURL = loaderURL.substr(0,loaderURL.lastIndexOf("\\")+1)+configXml.resource.@url;//trace(loaderURL);return toVersion(loaderURL);} return SysConfig.path + toVersion(configXml.resource.@url); } }}
<data> <version>1.0.0.0</version> <loadType>1</loadType> <runType>0</runType> <logType>0</logType> <EDType>0</EDType> <FNType>0</FNType> <FNList>1;2;3;4;5;6;8;9;10;11</FNList> <session>4403d2bc075ab9d928744495462ba807</session> <resource size="1397754" url="Main.swf"> <role> <xml> <item title="服务器配置" size="557" key="serverinfo">config/serverinfo</item> </xml> <swf> <item title="角色库" size="557" key="">login/CrRole.swf</item> </swf> </role> <scene> <xml title="游戏数据"> <item title="角色形象配置" size="19689" key="boyavatar">config/boyavatar</item> <item title="角色装备配置" size="37242" key="boypart">config/boypart</item> <item title="角色形象配置" size="16136" key="girlavatar">config/girlavatar</item> <item title="角色装备配置" size="31825" key="girlpart">config/girlpart</item> <item title="怪物配置" size="13909" key="monster">config/monster</item> <item title="技能配置" size="1629" key="skill">config/skill</item> <item title="itemInfo配置" size="345" key="itemInfo">config/itemInfo</item> <item title="npc形象配置" size="3274" key="npcavatar">config/npcavatar</item> <item title="特效配置" size="1321" key="effect">config/effect</item> <item title="taskDialogue" size="1321" key="taskDialogue">config/taskDialogue</item> <item title="task" size="1321" key="task">config/task</item> <item title="resource" size="1321" key="resource">config/resource</item> </xml> <swf> <item title="界面库" size="462617" key="">ui/AssetUI.swf</item> <item title="表情库" size="107952" key="">face/face.swf</item> <item title="默认形象库" size="107952" key="">avatar/default.swf</item> </swf> </scene> </resource></data>
- Flash学习笔记之XmlManager加载策略
- Flash笔记之加载外部字体
- Flash学习笔记之for
- Flash学习笔记之jsfl
- Hibernate检索策略学习之--立即加载
- Hibernate检索策略学习之--延迟加载
- Hibernate检索策略学习之--批量加载
- NAND FLASH学习笔记之nand flash基础(一)
- NAND FLASH学习笔记之nand flash基础(二)
- NAND FLASH学习笔记之nand flash基础(三)
- NAND FLASH学习笔记之nand flash基础(一)
- NAND FLASH学习笔记之nand flash基础(二)
- NAND FLASH学习笔记之nand flash基础(三)
- Flash学习笔记之雷达扫描
- Flash学习笔记之三级函数
- 学习笔记之Flash(基础)
- 设计模式学习笔记之策略模式
- 设计模式学习笔记之策略模式
- 八款开源Android游戏引擎
- 搜狐邮件中心 学习 基础库prototype
- java 大数阶乘(二)
- 从数据库(mysql)存取图片
- MediaPlayer
- Flash学习笔记之XmlManager加载策略
- Dom4j为XML文件要结点添加xmlns属性 .
- Hospital and healthy
- 苹果iPod销量不断下滑:iPhone和iPad争用户
- Windows API:GetUserName的用法
- Bitmap:bmWidthBytes以及Bitmap的详细说明
- javascript调用qt
- C语言中int型值的问题
- 《算法导论》练习题 2.1-4