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

本文介绍了一种使用ActionScript 3.0 (AS3) 在Flash中循环加载多个图片的方法,并提供了完整的代码示例。文章详细解释了如何避免加载过程中出现只显示最后一个图片的问题,确保每个图片都能正确加载并显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值