as3+XML读取文件夹图片并显示易错的地方(转自新浪微博)

这个文档类有两个容易出错的地方,其一是循环加载图片时在for里面要使用 . 

_LoadPic=new Loader();//每次加载只能加载一个图片,否则只能显示最后一个图片,每次都清空数据

e.target代替_LoadPic,因为每次加载的内容不一样,所以得用e.target

XML文件内容:(自己找几个图片放在img文件夹并命名成以下)

<?xml version="1.0" encoding="utf-8"?>
<info>

       <titles id="img/01.jpg" />

       <titles id="img/02.jpg" />

       <titles id="img/03.jpg" />

       <titles id="img/04.jpg" />

       <titles id="img/05.jpg" />

</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;
  
}
 
 }
 
}

原文地址:https://www.cnblogs.com/klh5211314/p/3380572.html