+ -
当前位置:首页 → 问答吧 → 如何实动态加载图片逐个呈现

如何实动态加载图片逐个呈现

时间:2007-07-03

来源:互联网

最近一直在练习FLASH动态加载图片,
具体方法是利用创建一系列的mc,按照一定要求来排列,在加载图片时侯,图片一瞬间就加载完毕,很不爽,想让图片一个一个的加载,
请高手提示下,给出思路

[ 本帖最后由 winhero_charles 于 2007-7-3 19:04 编辑 ]

作者: winhero_charles   发布时间: 2007-07-03

將圖片的地址路徑存到數組中,或用XML.

寫一個function函數,如:
var A:Array=["1.jpg","2.jpg","3.jpg",.......];
var n:Number=0
function LoadImg(ID){
這裏寫裝載圖片的程式,如裝完成執行一次LoadImg(n)
n++
}
LoadImg(0)

作者: 文仔   发布时间: 2007-07-03

加载当然是一下加完的,你要一个显示的过程,可以加载后全部不可见 (_visible,_alpha)都可以 或者全部离开舞台
再按你的要求 一个个的显示 不 就行了                  换个方法思考,问题就可以解决。

作者: hack86   发布时间: 2007-07-03

可以參考一下這個http://www.tonisalon.cn/image.swf

作者: 文仔   发布时间: 2007-07-03

sorry,我的描述有问题,应是让图片一个一个呈现

作者: winhero_charles   发布时间: 2007-07-03

就是文仔兄给出这样的效果,有没有源码供参考?

作者: winhero_charles   发布时间: 2007-07-03

做了一个效果,但是逐一呈现的效果还未出现,请朋友看看并提示,谢谢

附件

图片逐一呈现.rar (58.53 KB)

2007-7-4 20:35, 下载次数: 172

作者: winhero_charles   发布时间: 2007-07-04

还就我的例子提个问题:

附件

myQuestion.jpg (41.97 KB)

2007-7-4 20:42

作者: winhero_charles   发布时间: 2007-07-04

请支持下吧,因为的确在这方面不足..

作者: winhero_charles   发布时间: 2007-07-05

上图片中的问题已解决:
将两个for中的i,j位置对调,下代码为改后的

for(j=0;j<3;j++){
       for(i=0;i<3;i++){
              var mc=this.createEmptyMovieClip("mc"+i+j,this.getNextHighestDepth())
              var menu1=mc.attachMovie("menu","menu1",num);
              mc._x=150+(menu1._width+20)*i;
              mc._y=50+(menu1._height+20)*j;
              mc._alpha=50;
              menu1.txt.text="图片"+num;
              loading(n);
              n++;
              //trace(n);
              num++;
              
              //trace(num);
              //trace(menu1._parent);
       }
}

[ 本帖最后由 winhero_charles 于 2007-7-5 15:48 编辑 ]

作者: winhero_charles   发布时间: 2007-07-05

怎么搞暗暗

作者: Language911   发布时间: 2007-07-05

半透明效果,鼠标至,图片会逐渐清晰开来
做了一个效果,但是逐一呈现的效果还未出现,请朋友看看并提示

作者: winhero_charles   发布时间: 2007-07-05

你需要一个过程嘛

附件

图片逐一呈现.rar (65.65 KB)

2007-7-5 17:51, 下载次数: 184

作者: Idoit   发布时间: 2007-07-05

正是idoit这样的效果,谢谢
但是,
在这个例中,为何要先
loadmc(0)
??

[ 本帖最后由 winhero_charles 于 2007-7-5 19:55 编辑 ]

作者: winhero_charles   发布时间: 2007-07-05

将ediot源码放出,

var Arr_img = ["01","02","03","04","05","06","07","08","09"];
var len = Arr_img.length;

var main = this.createEmptyMovieClip("main", 1);
main._x = main._y = 50;

//---???????
loadmc(0);

function loadmc(n) {
       var tmpmc = main.createEmptyMovieClip("mc"+n, n);
              var mclListener = new Object();
       mclListener.onLoadInit = function(target) {
       tmpmc._x = n%3*90;
       tmpmc._y = Math.floor(n/3)*90;
       if (n<len-1) {
              loadmc(n+1);//或loadmc(++n)
              //trace(n);
              }
       };
       var image = new MovieClipLoader();
       image.addListener(mclListener);
       image.loadClip("images/"+Arr_img[n]+".jpg",tmpmc);
       //trace(Arr_img[n])
}
红线部份,条件为真,重复执行loadmc(n)

作者: winhero_charles   发布时间: 2007-07-05

引用:
原帖由 文仔 于 2007-7-3 18:51 发表
可以參考一下這個http://www.tonisalon.cn/image.swf
兄弟:能不能给源码学习下。很喜欢你那个。

作者: kelvin1984   发布时间: 2007-07-05

按ediot的方法,
我现在作如下改变,将图片的资料写入xml文件,让FLASH解析XML,AS如下:
复制内容到剪贴板
代码:
var picArray=new Array();
/////////////////////////////////////////////////
var myXML=new XML();
myXML.ignoreWhite=true;
myXML.load("xml/img.xml");
myXML.onLoad=function(suc){
    if(suc){
    fenxi();
    //trace("ok");
    loadPic(0);
    }
}
loadPic(0);
/////////////////////////////////////////////////
fenxi=function(){
    var myList=myXML.firstChild.childNodes;
    var len=myList.length;
    for(i=0;i<len;i++){
        picArray[i]=myList[i].attributes.name
        //trace(picArray[i]);
    }
}
/////////////////////////////////////////////////
function loadPic(n){
    var mc=this.createEmptyMovieClip("mc"+n,n)
    var  obj:Object=new Object();
    obj.onLoadInit=function(){
     mc._x=150+100*(n%3);//------>要将i%3括起来,运算顺序问题;
     mc._y=50+100*Math.floor(n/3);
     if(n<len-1){
         n++;
         loadPic(n)
         trace(n);
    }
    }
    var  myCl:MovieClipLoader=new MovieClipLoader();
    myCl.addListener(obj)
    myCl.loadClip(picArray[n],"mc"+n);
}
不知为什么只出现一张图片,请告诉我出问题的原因;
另img.xml文件内容如下:
复制内容到剪贴板
代码:
<?xml version="1.0" encoding="UTF-8" ?>
<imgs>
<pic name="images/01.jpg" />
<pic name="images/02.jpg" />
<pic name="images/03.jpg" />
<pic name="images/04.jpg" />
<pic name="images/05.jpg" />
<pic name="images/06.jpg" />
<pic name="images/07.jpg" />
<pic name="images/08.jpg" />
<pic name="images/09.jpg" />
</imgs>
[ 本帖最后由 winhero_charles 于 2007-7-7 10:32 编辑 ]

附件

图片逐一呈现.rar (65.11 KB)

2007-7-7 10:32, 下载次数: 93

作者: winhero_charles   发布时间: 2007-07-07

我刚做好源文件,经典就灭了!!刷新了N次才上来!
复制内容到剪贴板
代码:
//=========透明函数========
function alpha_func(_mc:MovieClip) {
    _mc._alpha = 5;
    _mc.onEnterFrame = function() {
        this._alpha += 5;
        this._alpha>95 ? delete this.onEnterFrame : 闪吧;
    };
}
//============MCL类===========
var _mcl:MovieClipLoader = new MovieClipLoader();
var n:Number = new Number();
this.onLoadInit = function(_mc:MovieClip) {
    _mc._txt.removeTextField();
    _mc._width = 80;
    _mc._height = 80;
    alpha_func(_mc);
    if (n<picArray.length) {
        n++;
        load_func();
    } else {
        trace("加载完成!");
    }
};
//如果没有下面的代码,就会一个加载出错,导致后面的都不能加载,用这个可以出错时继续向下加载,源文件中我故意少了一个图片,让它出错
this.onLoadError = function(_mc:MovieClip) {
    _mc.createTextField("_txt", 200, 20, 10, 60, 30);
    _mc._txt.textColor = 0xff0000;
    _mc._txt.text = "加载失败!";
    if (n<picArray.length) {
        n++;
        load_func();
    }
};
//=========加载进度显示==============
this.onLoadProgress = function(_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
    _mc.createTextField("_txt", 200, 20, 10, 60, 30);
    _mc._txt.textColor = 0xff0000;
    _mc._txt.text = Math.floor((bytesLoaded/bytesTotal*10000)/100)+"%";
};
_mcl.addListener(this);
//=================load函数========
function load_func() {
    this.createEmptyMovieClip("pic_mc"+n, n+100);
    //如果要改成竖向加载,只需把下面的_x _y换一下就行了
    this["pic_mc"+n]._y = 30+Math.floor(n/3)*100;
    this["pic_mc"+n]._x = 100+n%3*100;
    _mcl.loadClip(picArray[n], this["pic_mc"+n]);
}
//===========XML文件加载=========
var picArray = new Array();
var myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function(suc) {
    if (suc) {
        for (var d:Number = 0; d<this.firstChild.childNodes.length; d++) {
            picArray.push(this.firstChild.childNodes[d].attributes.name);
        }
        load_func();
    } else {
        trace("XML文件加载失败!");
    }
    //trace(picArray);
};
myXML.load("xml/img.xml");
[ 本帖最后由 nang 于 2007-7-7 11:36 编辑 ]

附件

test.rar (62.28 KB)

2007-7-7 11:35, 下载次数: 218

作者: nang   发布时间: 2007-07-07

nang兄真是快,您的源码我要借来码究下,我的问题,暂时还不知道错在什么地方

作者: winhero_charles   发布时间: 2007-07-07

问题还是被nang解决啦,出错原因:
原例中有两个变量len及n,由于是定义在一个函数内,却被另一个函数引用(定义在函数中的变量属局部变量,局部变量在此函数执行之后自动失效),所以在另一个函数内是空值;

解决办法:
将此变量定义为全局变量,同时检查自定义函数是否有重新定义此两个变量的现象,有的话去掉前面的关键字"var"

很基础吧,但缩合运用时,却被ingnore,看来还要多练!

作者: winhero_charles   发布时间: 2007-07-07

正在找可以下载的。

作者: szkim999   发布时间: 2008-05-21

好东西,谢了

作者: zmtcn   发布时间: 2010-04-23

哈哈~~!刚好需要这东东~~!谢谢咯!

作者: gzcgc   发布时间: 2010-04-24

var Loader:MovieClipLoader;
var ImgArr:Array;
var LoadID:Number;

/*初始化*/
function init(){
       ImgArr = ["01.jpg","02.jpg","03.jpg"."..."]
       LoadID = 0;
       Loader = new MovieClipLoader();
       Loader.addListener(this);
}

/*为每个被加载的对象创建容器*/
function createCtn(n){
       var oname = "ctn"+n;
       var depth = n+30;
       var o = this.createEmptyMovieClip(oname,depth);
       return o;
}

/*加载当前ID的对象*/
function LoadItem(){
       var p = ImgArr[LoadID];
       var ctn = createCtn(LoadID);
       Loader.loadClip(p,ctn);
}

/加载下一个ID的对象/
function loadNext(){
       if(LoadID < ImgArr.length){
              LoadID++;
              LoadItem();
       }
}

/*加载过程*/
function onLoadProgress(t,bytesLoaded,bytesTotal){
       var p = Math.floor(bytesLoaded/bytesTotal*100);
}

/*加载完毕*/
function onLoadInit(t){
       loadNext();       
}

init();

作者: JansingLiu   发布时间: 2010-04-24

我提一个问题,
如果让这一些图片形成环型显示,初始状态固定不动,点其中一个图片,就旋转到正面位置显示
这样的效果怎么写AS呢

作者: windwolf   发布时间: 2010-04-25

正急求相关内容

作者: badboy83226   发布时间: 2011-04-17

热门下载

更多