
这个文档类有两个容易出错的地方,其一是循环加载图片时在for里面要使用 .
_LoadPic=new Loader();//每次加载只能加载一个图片,否则只能显示最后一个图片,每次都清空数据
e.target代替_LoadPic,因为每次加载的内容不一样,所以得用e.target
XML文件内容:(自己找几个图片放在img文件夹并命名成以下)
<?xml version="1.0" encoding="utf-8"?>
<info>
<titles />
<titles />
<titles />
<titles />
<titles />
</info>
PicLoad.as代码:
package
{
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.LoaderInfo;
public class PicLoad extends MovieClip
{
//定义变量
private static var _Xml:XML=new XML();
private static var _XmlLoad:URLLoader=new URLLoader();
private static var _XmlUrl:String="list.xml";
private static var _XmlReq:URLRequest=new URLRequest(_XmlUrl);
private static var _LoadPic:Loader=new Loader();
private static var _PicXml:URLRequest=new URLRequest();
private static var _PicUrl:Array=new Array();
private static var _PicNum:uint;
private static var _PicSprite:Sprite=new Sprite();//图片容器
public function PicLoad()
{
_XmlLoad.load(_XmlReq);
_XmlLoad.addEventListener(Event.COMPLETE,readXml);
}
public function readXml(e:Event):void
{
//这里必须要有data,否则只是把容器赋值给_Xml
_Xml=XML(_XmlLoad.data);
_PicNum=_Xml.titles.length();
//把所有图片地址装入数组
for(var i:uint=0;i<_PicNum;i++)
{
_PicUrl.push(_Xml.titles[i].@id);
}
loadPic(0);
trace(_PicUrl);
}
public function loadPic(num:uint):void
{
for(var i:uint=0;i<_PicNum;i++)
{
_LoadPic=new Loader();
_LoadPic.load(new URLRequest(_PicUrl[i]));
_LoadPic.x=i*140+30;
_LoadPic.contentLoaderInfo.addEventListener(Event.COMPLETE,changePic);
_PicSprite.addChild(_LoadPic);
addChild(_LoadPic);
}
//addChild(_PicSprite);
}
public function changePic(e:Event):void
{
e.target.content.width=120;
e.target.content.height=120;
}
}
}