刚入门JS,想做一个“吃豆人”的游戏,默认吃豆人是自己走,用上下左右键控制转向;想要的结果是:每次按下一个方向键转向,都清除之前的自动走,再按这个放下走
但是现在是:按下一个放下键后,会有两个或多个setInterval一起运行;请问,多个setInterval,要怎么清除之前动作,单独执行一个setInterval..
$(document).keyup(function(e) {
        var k=e.which;
if(k==37){
var t1=setInterval(zuo,1000);
return;}
if(k==38){
var t2=setInterval(shang,1000);
return;}
if(k==39){
var t3=setInterval(you,1000);
return;}
if(k==40){
var t4=setInterval(xia,1000);
return;}
t1=clearInterval(t1);
t2=clearInterval(t2);
t3=clearInterval(t3);
t4=clearInterval(t4);
    });

解决方案 »

  1.   

    你用错了
    setInterval 一经启动就不会停止,除非你显式的清除他(clearInterval)
    每个 setInterval 都有一个唯一标识,你可以通过该标识操控他
    但你的 var t1=setInterval(zuo,1000); 在函数中,ti 又是局部变量
    所以函数外的 t1=clearInterval(t1); 是不起任何作用的你应该使用只计时一次的 setTimeout
      

  2.   


    t1=clearInterval(t1);
    t2=clearInterval(t2);
    t3=clearInterval(t3);
    t4=clearInterval(t4);这四个 放在四个if的前边试试