注册 登录
编程论坛 JavaScript论坛

关于函数调用,两个settimeout同时调用同一函数出错

安之若素ㄟ 发布于 2011-01-10 23:49, 1135 次点击
现在我们学的js特效,我自己做的是打地鼠的游戏,网上的代码很简练但是看不懂。
我的代码是这样的。

var n=0;
function movetop(no){
    //  每次使层向上移动固定距离。
    n++;
    var MT=setTimeout(movetop(no),100);
    if(n==10){
        clearTimeout(MT);
        var MB=setTimeout(movebottom(no),100);
    }  
}

function movebottom(no){
     //每次使层向下移动固定距离
    n--;
    if(n==0){
        clearTimeout(MB);
    }
}

//产生随机数使某一个层移动
function bringRandom(){
    var ra=随机数;

    movetop(ra);
    //调用使层移动
    setTimeout(bringRandom,1000);
}


大致代码是这样的,问题就是,一个层上下移动回原位置需要2分,随机数每一分钟产生一次,第一次是 层1 移动,还没移动回原位置时 movetop 函数又被调用,于是 层1 移动到一半就一直向一个方向移动了,层2 又开始移动了……所以不知道怎么解决这个问题。

还有一个问题就是,当页面运行时执行 onmousemove 时间时,页面会卡,好像影响 settimeout事件的执行,时间又会乱了。郁闷那,这个settimeout 事件很不可靠。
2 回复
#2
jianghong_022011-01-11 17:52
查Script的使用手册,
#3
gupiao1752011-01-11 22:17
var MT=setTimeout(movetop(no),100);
把这个时间改大一点;
 var MT=setTimeout(movetop(no),1000);
100的值小了点。如果还卡,就改成2000试试,又大到小,由慢到快,观察问题出在哪!
1