我覺得自己像個完整的klutz,我有這個工作,然後我不小心忘了保存它!我是個白癡。我花了最後一天的時間嘗試重新創造我所擁有的,但我無法做到。基本上(從我的最後一個保存),我有這樣的:用Javascript水平移動
function canvasMove(e) {
if(!e) var e = window.event;
var downcheck;
var upcheck;
var leftcheck;
var rightcheck;
if(e.keyCode == '38') {
if(up + down == 0) downcheck = false;
else downcheck = true;
e.preventDefault();
}
if(e.keyCode == '40') {
if(up + down > HEIGHT - 110) upcheck = false;
else upcheck = true;
e.preventDefault();
}
if(e.keyCode == '37') {
if(left + right == 0) rightcheck = false;
else rightcheck = true;
e.preventDefault();
}
if(e.keyCode == "39") {
if(left + right > WIDTH - 110) leftcheck = false;
else leftcheck = true;
e.preventDefault();
}
if(leftcheck == true) { left += 10; counting() };
if(rightcheck == true) { right -= 10; counting() };
if(upcheck == true) { up += 10; counting(true) };
if(downcheck == true) { down -= 10; counting(true) };
}
當然在於Javascrpt不支持,以檢查是否在同一時間被按下兩個鍵的能力的問題。我想要完成的是當用戶按下並離開時,他們會沿着對角線移動。忽略「計數」功能,只是爲了跟蹤用戶移動了多少。
我設法做到這一點,只是其他和如果陳述,不少!所以我想知道你們是否可以一蹴而就。每個關鍵if語句中的第一個if語句如此,用戶不能離開畫布框。然後我有一個通過重畫畫布來移動用戶的函數。
function redraw() {
clear(draw);
draw.fillStyle = 'rgba(0,0,0,0.5)';
draw.fillRect(left + right, up + down, '100', '100');
}
「清除」功能只是一個簡單的功能,可清除整個畫布。這一切都是由一個初始化函數,看起來像這樣控制:
function init() {
canvas = document.getElementById('game');
HEIGHT = canvas.height;
WIDTH = canvas.width;
draw = canvas.getContext('2d');
setInterval(redraw, 30);
document.onkeydown = canvasMove;
}
這是什麼問題? – Jerome 2010-08-27 17:58:58
「問題當然是Javascrpt不支持檢查兩個按鍵是否同時按下的功能,我想要完成的是當用戶按下並離開時他們會沿着對角線移動。」 – Johnny 2010-08-27 18:09:59
您是否說過您之前成功地讓瀏覽器識別了多個併發按鍵?目前還不清楚你在找什麼。一些現有的代碼不起作用嗎?如果是這樣,那麼究竟是什麼部分的代碼? – Pointy 2010-08-27 18:46:19