对于一个没有编程基础的人来说,我时常希望能有人告诉我,当我们看到一个效果的时候,该怎样有条理地分析出它的行为,而我自己有必要加强这方面的 自省,对于一个轮播图我是这样看的,自动播放必然带有一个定时器,而播放某帧(若假设为渐变为实),渐变就必然也有一个定时器。

1:人通过鼠标控制一个轮播的自动播放autoPlay。

a.当鼠标移入轮播图范围的时候,轮播图停止自动播放,反之开始自动播放:

oBox.onmouseover=function(){

clearInterval(play);

}

oBox.onmouseout=function(){

autoPlay();

}

b.当鼠标移到某按钮时,就播放该帧:(这里是这样思考的:必然按钮和图之间有一种联系来互相控制,它就是参数)

for(var i=0;i<aNum.length;i++){

aNum[i].index=i;//为每一个按钮添加一个“号码牌”属性;

show(this.index)

}

2:自动播放控制着每帧的播放show():

function autoPlay(){

play=setInterval(

index++;

index>=aNum.length && (index=0);//当播放到最后一帧,2秒后又++变为第aNum.length帧(空),就让它重头播放

show(index);

},2000)

autoPlay();

3:每帧的播放show(),每一次都先让所有帧都透明度变为0,也标记特定按钮,然后让特定帧实度渐增至opacity=1;

function show(a){  //需要播放来自自动播放产生的、鼠标移至按钮产生的特定帧,靠参数控制

for(var i=0;i<aLi.length;i++) aLi[i].style.opacity="";//未做兼容

for(var i=0;i<aNum.length;i++){

aNum[i].className="";

}

aNum[a].className="current";

var alpha=0;//最好在函数头声明

timer=setInterval(function(){

alpha++2;

alpha>100 && (alpha=100);

aLi[a].style.opacity =""+alpha/100;

alpha==100 && clearInterval(timer);

},20)

}

04-19 23:35