我在jquery中有一个游戏,如果你按下键盘上的右键,它会加载某个图像,如果你按下键盘上的左键,它会加载另一个图像。我的问题是所有这一切都发生在一个不断重复的区间。一旦程序发现我的右键不再被按下,它将自动绘制第二个图像。我希望它能做到以下几点: - 如果我按向右箭头,它将绘制Image1并保持该状态,直到我按下左键 - 如果我按向左箭头,我希望我的Image2被绘制并保持该状态,直到我按下右键
如果我在while循环中执行此操作,我的网页将崩溃,因为它将保留在while循环中,后续内容将无法执行。
这是有效的,但是一旦我释放了正确的键,rightDown将为false,当程序再次找到if语句时,它将绘制我的Image2。 (间隔非常快)
if(rightDown)drawImage1();
else drawImage2();
如果我使用这个
if(rightDown)drawImage1();
else if(leftDown) drawImage2();
我不按左或右键不会绘制图像。
rightDown和leftDown
function onKeyDown(evt) {
if (evt.keyCode == 39) rightDown = true;
else if (evt.keyCode == 37) leftDown = true;
else if (evt.keyCode == 38) upKeyDown = true;
else if(evt.keyCode == 40) downKeyDown = true;
}
以及未点击它们的部分
function onKeyUp(evt) {
if (evt.keyCode == 39) rightDown = false;
else if (evt.keyCode == 37) leftDown = false;
else if (evt.keyCode == 38) upKeyDown = false;
else if (evt.keyCode == 40) downKeyDown = false;
}
(文档)$ .keydown(的onkeydown); (文档)$ .keyup(的onkeyup);
答案 0 :(得分:0)
假设您有一个绘制默认图像的功能,名为drawDefault()
;使用此代码:
window.onload = drawDefault;
这样,在窗口加载时,它将绘制默认图片(也可以用作window.onload = drawImage[1,2]();
(其中[...]表示选择)。
如果您已为.onload
定义了window
方法,那么您只需扩展.onload
功能:
window.onload = function(){
// ... code ...
drawDefault();
}
或者,用更有趣的方式:
if(!window.onload){
window.onload = drawDefault;
} else {
var on = window.onload;
window.onload = function(){
on();
drawDefault();
}
}
结合这一点,使用您的代码:
if(rightDown)drawImage1();
else if(leftDown) drawImage2();
(就我个人而言,我使用{...}
括起if
,else if
和else
语句,因为它更容易阅读(以及有多难按两个额外的键还是这样的?)。
结果将是,如果我已经正确地解释了你的问题和你的代码(无论如何),将会发生的是:
rightDown
上,将显示正确的图像,leftDown
上,将显示左图。希望它有所帮助!!