+ -
当前位置:首页 → 问答吧 → 求助一个关于MovieClipLoader与setinterval自动播放图片的问题(已解决)

求助一个关于MovieClipLoader与setinterval自动播放图片的问题(已解决)

时间:2011-06-09

来源:互联网

实现效果应该是每隔几秒钟的时间加载一张图片,后加载的图片是一张张淡入显示的。
现在碰到的问题是,总是加载第一张图片,后面的都没加载到,但调试结果显示后面的图片是有加载的,但是动态生成的用于承载图片的MC trace出来居然是undefined,不知这个问题是由什么导致的,代码如下: 源文件见附件

stop();

//执行频率(毫秒)
var ttime:Number;
//设置一个深度值变量
var depth:Number = 1;
//图片索引
var item:Number = -1;
//图片数组长度
var p:Number;
var _b:Boolean = false;
var myinterval:Number;

//创建影片剪辑,及初化图片
var mcLoader:MovieClipLoader = new MovieClipLoader();
var mcListener:Object = new Object();
mcListener.onLoadInit = function(target:MovieClip) {
       //卸载当前显示图片两层以下的装载图片的MC,防止长时间系统资源耗尽
       this["load_mc" + (depth - 3)].removeMovieClip();
       target._alpha = 0;
       //设置加载完成的图片属性
       _mc._x = 0;
       _mc._y = 0;
       _mc._width = 800;
       _mc._height = 600;
       //调用图片透明度函数
       alpha_func(target);
};
mcLoader.addListener(mcListener);

//---解析XML部分---
//建立数组准备存放内容
my_pic = [];
pic_xml = new XML();
pic_xml.ignoreWhite = true;
pic_xml.onLoad = function(success:Boolean) {
       if (success) {
              //主体拆分部分
              mytime = this.childNodes[0].attributes.stoptime;
              ttime = mytime * 1000;
              mypath = this.childNodes[0].attributes.path;
              tmp = this.childNodes[0].childNodes;
              for (i = 0; i < tmp.length; i++) {
                     my_pic.push(mypath + tmp[i].attributes.filename);
              }
              p = tmp.length;
              _b = true;
              load_pic();
              //加载图片的频率
              myinterval = setInterval(load_pic, ttime);
       } else {
              _b = false;
       }
};
pic_xml.load("图片/Img_list.xml");


//加载图片的函数
function load_pic() {
       item++;
       //与图片数组取模,保证运行到最后一张图后重新指向第一张
       item %= p;
       //深度值递加
       depth++;
       _root.createEmptyMovieClip("load_mc" + depth,depth);
       //加载外部影片
       mcLoader.loadClip(my_pic[item],this["load_mc" + depth]);       
     trace(this["load_mc" + depth]);
}

//图片透明度函数
function alpha_func(target:MovieClip) {
       target._alpha = 10;
       target.onEnterFrame = function() {
              this._alpha += 10;
              this._alpha >= 95 ? delete this.onEnterFrame : Error;
       };
}

[ 本帖最后由 kaba47 于 2011-6-9 19:55 编辑 ]

附件

屏保.rar (725.96 KB)

2011-6-9 18:05, 下载次数: 0

作者: kaba47   发布时间: 2011-06-09

晕,我已经找到原因了,是路径出问题了。。。。。this改root即可
       
//加载外部影片
mcLoader.loadClip(my_pic[item],_root["load_mc" + depth]);

作者: kaba47   发布时间: 2011-06-09