为了实现加载图片的功能,折腾了好长时间,为了以后方便,写出来,欢迎大家交流。这个文档类有两个容易出错的地方,其一是循环加载图片时在for里面要使用 _LoadPic=new Loader();//每次加载只能加载一个图片,否则只能显示最后一个图片,每次都清空数据
e.target代替_LoadPic,因为每次加载的内容不一样,所以得用e.target
XML文件内容:(自己找几个图片放在img文件夹并命名成以下)
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; } } }