找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1602|回复: 4

[AS3] 用库中定义的类随机加载图片遇到问题

[复制链接]
发表于 2010-2-15 20:22:00 | 显示全部楼层 |阅读模式
调用自定义的mc,来加载外部的图片文件,但是由于数量巨大,只能定义为局部变量,这样在'Event.COMPLETE'时就出现了问题:
不能指定路径加载,不知哪位能指点一下

目前没有加'Event.COMPLETE'可以运行,但是在网络环境下就不成了……
  1. //-------------------------------------------init
  2. var ul:URLLoader;
  3. var ur:URLRequest;
  4. var dataArr:Array;
  5. //-------------------------------------------run
  6. loadXML();
  7. //-------------------------------------------function
  8. function loadXML():void
  9. {
  10.         ul = new URLLoader();
  11.         ur = new URLRequest('goods2.xml');
  12.         ul.addEventListener(Event.COMPLETE,loadedXML);
  13.         ul.load(ur);
  14. }

  15. function loadedXML(e:Event):void
  16. {
  17.         var tmpXml:XML = XML(e.target.data);
  18.         dataArr =  new Array();
  19.         for (var i:int=0; i < tmpXml.good.length(); i++) {
  20.                 dataArr.push(tmpXml.good[i].Img);
  21.         }
  22.         dealCards();
  23. }

  24. function dealCards():void
  25. {
  26.         var cardlist:Array = new Array();
  27.         for (var k:uint=0; k<(4* 2); k++) {
  28.                 cardlist.push(k);
  29.         }
  30.         for (var i:uint=0; i<4; i++) {
  31.                 for (var j:uint=0; j<2; j++) {
  32.                         var img_mc:Img_mc = new Img_mc();
  33.                         img_mc.x = i* 110 +60;
  34.                         img_mc.y = j* 160 +60;
  35.                         var r:uint = Math.floor(Math.random()*cardlist.length); //随机挑选图片
  36.                        
  37.                         //-------------------------------------载入相应的文字图片
  38.                         var ul2:Loader = new Loader();
  39.                         var ur2:URLRequest = new URLRequest(String(dataArr[cardlist[r]]));
  40.                         ul2.load(ur2);
  41.                         ul2.contentLoaderInfo.addEventListener(Event.INIT,onInit);
  42.                         /*失败方法一
  43.                                 ul2.addEventListener(Event.COMPLETE,onComplete)*/
  44.                         /*失败方法一
  45.                                 ul2.addEventListener(Event.COMPLETE,function(e:Event){img_mc.container.addChild(ul2)})*/
  46.                        
  47.                         cardlist.splice(r,1); // 剔除用过的图片
  48.                         img_mc.container.addChild(ul2);
  49.                         this.addChild(img_mc);
  50.                 }
  51.         }
  52. }
  53. function onComplete(e:Event):void
  54. {
  55.         //不知道如何加载(局部变量找不到路径)
  56. }
  57. function onInit(e:Event):void
  58. {
  59.         e.target.content.width = 70;
  60.         e.target.content.height = 90;
  61. }
复制代码

fla.rar

64.56 KB, 下载次数: 237

发表于 2010-2-15 21:54:25 | 显示全部楼层
ul2.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete)
                ............
function onComplete(e:Event):void
{
        trace(e.target.url);
        //不知道楼主是什么意思
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-15 22:32:27 | 显示全部楼层
就是我在for循环里面创建了一个
var img_mc:Img_mc = new Img_mc();

现在需要侦听Event.COMPLETE,后,再进行加载,即把for循环中的img_mc.container.addChild(ul2);
移到onComplete中去,我不知道如何去做……

不知道说清楚了没有,谢谢回复
回复 支持 反对

使用道具 举报

发表于 2010-2-15 23:01:13 | 显示全部楼层
 这种思路不合理

 如果非要按这种思路进行,可以封装一下 Loader 类,添加一个属性,来记录,它将要被添加到哪个Img_mc类中
如:
  1. package
  2. {
  3.         import flash.display.Loader;
  4.        
  5.         /**
  6.          * ...
  7.          * @author FLASH023
  8.          */
  9.         public class JBLoader extends Loader  
  10.         {
  11.                 public var jb:Img_mc;
  12.                
  13.         }
  14.        
  15. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-16 00:42:24 | 显示全部楼层
原来是这样,那再请问版主一下,正常的思路是???

一个xml的节点中有图片、标题、内容等消息,此类东西有N条
先实例化,一个一个加载?再混排进行addChild?(但是这样如何减少代码?再写个小的loader类?)

[[i] 本帖最后由 sji716 于 2010-2-16 00:43 编辑 ]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )

GMT+8, 2021-3-6 19:14 , Processed in 0.060522 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表