嗨我已經從某些Internet模板中獲取代碼(用箭頭鍵移動對象)。從那以後,我限制了對象可以移動的區域,但是我仍然有一個問題,那就是當我按下箭頭鍵時,對象的移動超出了必要的範圍,我只是想將它移動到合適的方向上20px,無論如何長按鍵。js用箭頭鍵移動對象(僅一次)
下面是功能:
var GameInput = (function() {
var pressedKeys = {};
function setKey(event, status) {
var code = event.keyCode;
var key;
switch(code) {
case 32:
key = 'SPACE'; break;
case 37:
key = 'LEFT'; break;
case 38:
key = 'UP'; break;
case 39:
key = 'RIGHT'; break;
case 40:
key = 'DOWN'; break;
default:
// Convert ASCII codes to letters
key = String.fromCharCode(event.keyCode);
}
pressedKeys[key] = status;
}
document.addEventListener('keydown', function(e) {
setKey(e, true);
});
document.addEventListener('keyup', function(e) {
setKey(e, false);
});
function isDown(key) {
return pressedKeys[key];
}
return {
isDown: isDown
};
})();
和函數調用它:
function update() {
if(GameInput.isDown('DOWN')) {
if(player.y < canvas.height - player.sizeY) {
player.y += 20;
}
}
if(GameInput.isDown('UP')) {
if(player.y > 0) {
player.y -= 20;
}
}
if(GameInput.isDown('LEFT')) {
if(player.x > 0) {
player.x -= 20;
}
}
if(GameInput.isDown('RIGHT')) {
// Don't go out of canvas
if(player.x < canvas.width - player.sizeX) {
player.x += 20;
}
}
// You can pass any letter to `isDown`, in addition to DOWN,
// UP, LEFT, RIGHT, and SPACE:
// if(GameInput.isDown('a')) { ... }
}
我明白爲什麼它做什麼它做,但我一直沒能進行修改,只移動20像素,無論一個關鍵多少時間按下。
謝謝
謝謝,但它似乎並不能改變什麼。我試圖插入jsfiddle,但它不起作用。這是整個js文件http://pastebin.com/utZeM3iJ謝謝 – Wasteland