javascript - 我的右 + 左箭头键绑定不起作用
问题描述
我正在尝试制作 HTML、CSS 和 JavaScript 游戏。当按下左右箭头键时,玩家应该左右移动。我不知道为什么,但这段代码没有添加事件监听器。有什么帮助吗?这是我的 index.html 文件中的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
JavaScript Platformer
</title>
</head>
<body>
<canvas id="game" class="game" width="500" height="500"></canvas>
</body>
<script src="script.js"></script>
<link rel="stylesheet" type="text/css" href="style.css"/>
</html>
这是我的 script.js 文件中的代码:
var canvas = document.getElementById("game");
var ctx = canvas.getContext("2d");
var playerImg = new Image();
var player = {
x: 225,
y: 375,
width: 50,
height: 50
}
function draw() {
playerImg.onload = function () {
// draws the player image
ctx.drawImage(playerImg, player.x, player.y, player.width, player.height);
}
playerImg.src = "images/player.png";
}
document.body.addEventListener("keydown", function (event) {
event.preventDefault();
if (event.keycode == 37) {
// deletes the last image so the image doesn't get duplicated
ctx.clearRect(player.x, player.y, player.x + player.width, player.y + player.height);
// moves the player
player.x -= 20;
}
if (event.keycode == 39) {
// deletes the last image so the image doesn't get duplicated
ctx.clearRect(player.x, player.y, player.x + player.width, player.y + player.height);
// moves the player
player.x -= 20;
}
}, false);
setInterval(draw, 100);
这是我的 CSS 文件中的代码:
.game {
border: 3px solid black;
border-radius: 8px;
}
有什么帮助吗?我看不出这段代码有任何问题。
解决方案
我认为您的代码中有一个小错字。它event.keyCode == 39
不是event.keycode == 39
(注意 C 在 keyCode 中是大写的)
也是如此event.keycode == 39
。它应该是event.keyCode == 39
推荐阅读
- java - Android Java - 移动下一个片段时无法隐藏 AVLoadingIndicatorView
- nlp - 用于从给定文本输入分析和生成句子的机器学习
- flutter - 无法滚动到页面底部颤动(反弹)
- webpack - 我无法使用 POSTCSS 在 VueCLI 中设置自动前缀
- javascript - 在未呈现的组件中访问不正确的属性时出错
- c# - C# 9.0 中的本机大小整数是什么?
- php - 自定义 WordPress 的激活页面
- javascript - 实现分页和加载微调器以附加元素(多个选项卡)
- powershell - 在powershell中序列化复杂类时排除或选择性地包含子属性
- javascript - select tag onchange 不执行,函数失败:Uncaught ReferenceError: ... is not defined