HTML5 箭头键无法正常工作
HTML5 arrow keys not working correctly
大家好,
我目前在按 [空格] 键时无法使箭头键正常工作。当持有[空格]键和其中一个箭头键时,一切都在工作。但是,如果我尝试按 [空格] 并同时按住 [向上] 和 [左] ,它会偏离到屏幕顶部,就好像甚至没有按下 [左] 键一样(它应该对角线移动到左上角)。这仅在按下 [空格] 时发生。我想稍后使用此键射击子弹。
我的代码有问题吗?还是某种错误?
为我的英语不好道歉:/..
<!DOCTYPE html>
<body>
<canvas id="myCanvas" width="568" height="262">
</canvas>
<script type="text/javascript">
var canvas;
var ctx;
var dx = 0.5;
var dy = 0.5;
var x = 284;
var y = 130;
var WIDTH = 568;
var HEIGHT = 262;
var keys = new Array();
function circle(x,y,r) {
ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI*2, true);
ctx.fill();
}
function rect(x,y,w,h) {
ctx.beginPath();
ctx.rect(x,y,w,h);
ctx.closePath();
ctx.fill();
ctx.stroke();
}
function clear() {
ctx.clearRect(0, 0, WIDTH, HEIGHT);
}
function init() {
canvas = document.getElementById("myCanvas");
ctx = canvas.getContext("2d");
window.addEventListener('keydown',doKeyDown,true);
window.addEventListener('keyup',doKeyUp,true);
return setInterval(draw, 1);
}
function draw() {
move();
clear();
ctx.fillStyle = "white";
ctx.strokeStyle = "black";
rect(0,0,WIDTH,HEIGHT);
// player ///
ctx.fillStyle = "purple";
circle(x, y, 20);
}
function doKeyDown(evt)
{
keys[evt.keyCode] = true;
evt.preventDefault(); // Prevents the page to scroll up/down while pressing arrow keys
}
function doKeyUp(evt){
keys[evt.keyCode] = false;
}
function move() {
if (32 in keys && keys[32]){
; // fire bullets
}
if (38 in keys && keys[38]){ //up
y -= dy;
}
if (40 in keys && keys[40]){ //down
y += dy;
}
if (37 in keys && keys[37]){ //left
x -= dx;
}
if (39 in keys && keys[39]){ //right
x += dx;
}
}
init();
</script>
</body>
</html>
这很可能与您的代码无关。为了节省成本,许多键盘无法同时支持 3 个或更多键的每个组合,并且专门连接以支持常用的组合(例如 Ctrl+Alt+Del)。这种现象被称为"重影"。
有关扩展说明,请参阅Microsoft的此页面。
我遇到了同样的问题(我找到了问题但没有解决问题),向上和向左的键代码相互跟随。 所以做下和右。键代码相互跟随的事实似乎是问题所在。如果将 A 设置为向上移动玩家,将 B 设置为向下移动玩家,则按 A+B+空格键会发生相同的问题。但是当按键代码不同(例如WASD)时,三个按钮按下即可。使用 WASD 似乎是个好主意,但请等到使用法语键盘的人玩您的游戏。无论如何,我写这篇文章希望有人能找到解决方法。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- javascript扫雷器floodfill算法不能正常工作