关于函数调用,两个settimeout同时调用同一函数出错
现在我们学的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 事件很不可靠。