as3+XML读取文件夹图片并显示易错的地方

    技术2022-05-19  22

    为了实现加载图片的功能,折腾了好长时间,为了以后方便,写出来,欢迎大家交流。这个文档类有两个容易出错的地方,其一是循环加载图片时在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;      }    }   }

     


    最新回复(0)