1501/090
Flash-AS2和AS3加载XML
先来AS2版本的:
var gb_xml:XML = new XML();
var xmlpath = "xml.php";
gb_xml.ignoreWhite = true;
gb_xml.load(xmlpath);
gb_xml.onLoad = function(s:Boolean)
{
if (s)
{
trace("xml loaded");
//do something here
init();
}
else
{
trace("failed");
//do something here
}
};
AS2里边XML的遍历比较简单,因为XML有个length()方法可以直接返回XML的节点长度。
这样我们如果需要遍历的话就可以这样写:
function init(){
for(var i:Number=0;gb_xml.length();i++){
attachMovie("xxx","xxx",100+i);
//do something here
}
}
但是在AS3里,XML的length()方法只会返回1……对于这个问题,我们可以使用XML的children()方法先返回一个XMLList,
XMLList等同于AS2的的XML,可以使用length()方法,这样一来就可以跟AS2采取一样的操作了。
var xml_menu:XML = new XML();
var xmlurl:String = "menu.xml";
var xmlrequest:URLRequest = new URLRequest(xmlurl);
var xmlloader:URLLoader = new URLLoader(xmlrequest);
xmlloader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event):void {
xml_menu = XML(xmlloader.data);
//trace("Data loaded.");
//获取XML的节点长度
int_menunum=xml_menu.children().length();
for (var i:int=0; i<int_menunum; i++) {
var _mc=new xxx();
addChild(_mc);
}
}