AS3中XML使用汇总

 
   http://www.twowaysthroughlife.com/

AS3中XML使用汇总

一般情况下,name和localName一样。var nodeNmae:String = list[i].name();//trace(i+"  "+list[i].localName());trace(i+"  "+list[i].name());

 shiftLoop


下面是失败的:

public static function getChildAsObject(xObj:XML):Object {
			var obj:Object = new Object();
			//trace("xObj ->"+ xObj);
			//trace("child ->"+ xObj.data);
			var a:Object, c:Object, nName:String, nType:Number, nValue:String, cCount:Number;
			for (a in xObj.attributes) {
				trace("123"+a.name()); 
				obj[a] = xObj.attributes[a];
			}
			//for (c in xObj.childNodes) {
					//trace("c  "+xObj.child("*")); 
			var child:XMLList = xObj.children();
			for (var i:int = 0; i < child.length();i++ ) {
				var c = child[i];
				//trace("c " + c);
				if (c.nodeKind() != "comment") {
					nName = c.localName();
					nType = c.nodeKind ();
					nValue = c.nodeValue;
				
					if (nType == 3) {
						obj._value = nValue;
						obj._type = 'text';
					}
					if (nType == 1 && nName != null) {
						if (obj[nName] == null) {
							obj[nName] = getChildAsObject(xObj.childNodes[c]);
						} else if (obj[nName]._type != 'array') {
							obj[nName] = [obj[nName]];
							obj[nName]._type = 'array';
						}
						if (obj[nName]._type == 'array') {
							obj[nName].unshift(getChildAsObject(xObj.childNodes[c]));
						}
					}
				}
			}
			return obj;
		}



 

这段代码:

			var txt:TextField = new TextField();
			txt.text = Main.xml.@title; 
			txt.width = ST.width;
			txt.selectable = false;
			addChild(txt);
			
			var tf:TextFormat = new TextFormat();
			tf.align = "center";
			tf.size = 24;
			txt.setTextFormat(tf);

用101可以写成

			var LBtitle:Label = new Label(this, 0, 0, Main.xml.@title);	
			LBtitle.width = ST.width;
			
			var tf:TextFormat = new TextFormat();
			tf.align = "center";	
			tf.size = 24;		
			LBtitle.setTextFormat(tf);		



 


AS3中XML要获取属性有2个:attributes和attribute,注意他们都是方法。就是写法不同——有没有s,用起来没什么区别。
attribute("*")和attributes()等效。
返回XMLList,当Array来用,用for...in,会发现
arg[0]=Data1
arg[1]=Data2
也就是说和数组是一回事。也就是说可以用for..i++遍历,要记住一点,其长度用的是方法——length(),而不是属性——length,这一点和数组很不一样。
其实这点屁大的事根本不用记——为效率,我们通常用for..in遍历,不用for..i++遍历,哈哈哈。
为简单,我通常让xml的属性名直接用到MC的属性名上,所以要取得属性名。
要取得属性名,关键是name()

 var arg:XMLList = list[i].attribute("*");
 for (var j:String in arg) 
 { 
  trace(j+"..."+arg[j].name());
  var attrName:String = arg[j].name();
  if (attrName == "text" || attrName == "label" ) {
   trace("........")
   end[attrName] = arg[j];
  }
 }  

 AS2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值