你怎么能定义要发生的事情并保持这种状态?

时间:2014-12-01 21:39:34

标签: javascript jquery

我在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);

1 个答案:

答案 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();

(就我个人而言,我使用{...}括起ifelse ifelse语句,因为它更容易阅读(以及有多难按两个额外的键还是这样的?)。

结果将是,如果我已经正确地解释了你的问题和你的代码(无论如何),将会发生的是:

  1. 将显示默认图像
  2. rightDown上,将显示正确的图像,
  3. leftDown上,将显示左图。
  4. 希望它有所帮助!!