我试图做一个图片展示程序,每张照片透明度从0-100之后,切换到下一张图片,单张图片的透明度变换可以用setInterval解决,但是如何把setInterval和循环综合起来?如果
for (i=0;i<picnum;i++)
{
s=setInterval(图片透明度变换函数,i);
}
的话,循环并不会等window.clearInterval(s);之后才执行,然后就导致出错。 问下,应该换成什么结构写循环? 
如果需要多重循环呢?

解决方案 »

  1.   

    循环的方法容易逻辑混乱,可以考虑用自定义事件,如果用jquery就比较简单,给你个思路:1、给图片绑定一个自定义事件
    如:.bind("ON_TRANS_COMPLETE", showNext);
    在透明度到100时抛出事件:.trigger("ON_TRANS_COMPLETE");2、将图片切换改成队列方式,在 showNext 方法中执行下一条
      

  2.   

    这样的话,不用循环。SetInterval本来就是一个重复执行重复执行某个函数,然后用一个全局的变量来控制要展示的图片。函数始终根据这个全局量来显示。显示完一张之后修改全局量变为下一张。
    或者用SetTimeout来做。只延时执行一遍。然后显示的时候,延时下一次显示。
      

  3.   

    直接setInterval阿,外层的for循环不需要
    var imgs;//存放图片的数组
    var imgNo = 0;//标识当前到了第几张图片
    var i = 0;//透明度
    var timer = setInterval(function(){
     var img;  
     img = imgs[ImgNo];//从图片数组中取出下一个图片 
     //当i=100时imgNo++;
     
    },1000);
      

  4.   

    var currentIndex = 1;
    setInterval(function(){
       if(是不是最后一张){
        currentIndex=1;
    }else{
        ++currentIndex;
    }
    //    图片透明度变换函数
    },1000);
      

  5.   

    用animate函数,$("#**").animate({ opacity: 0},"10000",function(){ //动画执行完毕再进行下一张图片});