为什么我的关键命令不起作用
Why my key commands are not working
我的问题是,当我按下键在屏幕上移动对象时,我的javascript看不到。这是我的java脚本代码:
var canvas = document.getElementById("maincanvas");
var context = canvas.getContext("2d");
var keys = [];
var width = 500,
height = 400,
speed = 3;
var player = {
x: 10,
y: 10,
width: 20,
height: 20
};
window.addEventListener("keydown", function (e) {
keys[e.keycode] = true;
}, false);
window.addEventListener("keyup", function (e) {
delete keys[e.keycode];
}, false);
/*
up - 38
down - 40
left - 37
right - 39
*/
function game() {
update();
render();
}
function update() {
if (keys[38]) player.y -= speed;
if (keys[40]) player.y += speed;
if (keys[37]) player.x -= speed;
if (keys[39]) player.x += speed;
}
function render() {
context.clearRect(0, 0, 100, 100)
context.fillRect(player.x, player.y, player.width, player.height);
}
setInterval(function () {
game();
}, 1000 / 30);
如果你不能告诉我,我对这个很陌生,只是在学习基础知识。
要从事件对象中取出的值称为keyCode
,而不是keycode
:
var canvas = document.getElementById("maincanvas");
var context = canvas.getContext("2d");
var keys = [];
var width = 500,
height = 400,
speed = 3;
var player = {
x: 10,
y: 10,
width: 20,
height: 20
};
window.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
}, false);
window.addEventListener("keyup", function(e) {
delete keys[e.keyCode];
}, false);
/*
up - 38
down - 40
left - 37
right - 39
*/
function game() {
update();
render();
}
function update() {
if (keys[38]) player.y -= speed;
if (keys[40]) player.y += speed;
if (keys[37]) player.x -= speed;
if (keys[39]) player.x += speed;
}
function render() {
context.clearRect(0, 0, 100, 100)
context.fillRect(player.x, player.y, player.width, player.height);
}
setInterval(function() {
game();
}, 1000 / 30);
<canvas id="maincanvas"></canvas>
您可能遇到的另一个问题是keys
是一个数组,您将其视为一个对象。keys[38]
正在寻找索引38
处的关键字而不是具有值38
的关键字。设置keys = {};
编辑没关系,我知道你只是把索引设置为38。我想说这是一种有点奇怪的方法,考虑使用对象而不是数组。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Web控制台命令不起作用
- 为什么我的关键命令不起作用
- 基本的jQuery命令不起作用
- 谷歌地图融合表API SQL“;“喜欢”;命令不起作用
- 永远启动命令不起作用
- 多个 jquery 命令不起作用
- 脚本在printWindow命令中不起作用
- 用于发送电子邮件的Javascript函数不起作用(固定命令打开outlook,而函数不起)
- Jquery循环插件.上一个命令不起作用
- Bower安装命令在windows上不起作用
- 在windows上安装Node后,Node命令在cmd中不起作用
- 当尝试创建多个js文件时,命令在早午餐中不起作用
- .push()命令在javascript中不起作用
- 为什么在包装adobe空气应用程序后,它没有'不起作用,但通过命令行运行它起作用吗
- 节点命令不起作用
- Typeof命令不起作用