[转] [Lii]自定义命名空间使用技巧之——命名空间与XML
http://bbs.9ria.com/viewthread.php?tid=63697&extra=page%3D3%26amp;orderby%3Drecommends%26amp;filter%3Drecommend
在一部分AS3项目中XML是我们经常使用的一种保存数据的手段,我们经常用XML来保存一些数据或者一些参数的设置。使用FLEX的朋友更是对MXML这个XML的加强定制版非常熟悉。那么在编写代码的时候我们就不得不经常写一些解析XML内容的代码。今天我要讲的有个小技巧也是刚整理出来的一种命名空间来方便解析XML的方法。有朋友已经从LEX的MXML中领悟到这种使用方法的话请勿见笑。
一、复杂类型变量值的转换
在XML中我们都知道在用AS3的XML类读取进来后,其各种值基本都是以String的形式存在的。所以在想存放一些比如数组或者在制作UI的时候的一些复合属性时我们需要对这些字符串进行加工以便转换成AS3的其他变量类型。比如下面的一个XML:
然后是一个默认默认包的顶级类:package{ public class LiiUIManager{ public static const core:LiiUIManager = new LiiUIManager(); public namespace lii = "http://www.aslii.com/liiUI"; public var uiList:Array = new Array; public var length:int; public function LiiUIManager(){ } lii static function set Button(data:XML):void{ trace("[ new lii::Button ]"); core.uiList[length] = new myButton(); core.length += 1; //以下用XML解析转换属性代码并且进行详细构造,这里就不写了。 } public static function buildUI(data:XML):void{ var nodeList:XMLList = data.children(); for each (var node:XML in nodeList) { var valueName:String = node.localName(); var ns:Namespace = node.namespace(); LiiUIManager.ns::[valueName] = node; } } }}
最后是执行解析:
LiiUIManager.buildUI(xml);
复制代码
而且我们可以把它们写成可以动态编译的实时解析与构造而不像FLEX那样必须经过编辑器编译构造。这只是个小小的例子,具体的大家可以尽情发挥自己的想像力与创造力。FLEX的MXML并不神秘就是如此简单,我们也可以拥有。