多个setInterval 怎么单独执行

菜猿 2016-05-19 10:11:01
刚入门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);
});
...全文
413 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜猿 2016-05-31
  • 打赏
  • 举报
回复
引用 2 楼 lanshs 的回复:

t1=clearInterval(t1);
t2=clearInterval(t2);
t3=clearInterval(t3);
t4=clearInterval(t4);
这四个 放在四个if的前边试试
嗯嗯~! 用一个全局变量控制计时器就可以了
智商众筹 2016-05-23
  • 打赏
  • 举报
回复
 这样处理多累,设置一个全局变量保存当前方向,按键后只改变这个变量值,在定时器里读取这个变量再决定直走还是转弯 吃豆人的游戏是固定步进的,不要求按键后立刻响应
lanshs 2016-05-20
  • 打赏
  • 举报
回复

t1=clearInterval(t1);
t2=clearInterval(t2);
t3=clearInterval(t3);
t4=clearInterval(t4);
这四个 放在四个if的前边试试
xuzuning 2016-05-20
  • 打赏
  • 举报
回复
你用错了 setInterval 一经启动就不会停止,除非你显式的清除他(clearInterval) 每个 setInterval 都有一个唯一标识,你可以通过该标识操控他 但你的 var t1=setInterval(zuo,1000); 在函数中,ti 又是局部变量 所以函数外的 t1=clearInterval(t1); 是不起任何作用的 你应该使用只计时一次的 setTimeout

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧