Я получаю сообщение об ошибке event.keyCode, говорящее, что
Cannot read property 'keyCode'
Я хочу, чтобы код, когда я нажимаю "I", загружает экран, который я нарисовал на своем холсте.
var canvas = document.querySelector("canvas");
document.addEventListener('keydown', loadScreen);
canvas.width=640;
canvas.height=640;
var draw = canvas.getContext("2d");
loadScreen();
function loadScreen(event) {
var key = (event.keyCode);
if (key == 73)
{
InventoryScreen();
}
}
function InventoryScreen()
{
draw.fillStyle = "#D3D3D3";
draw.fillRect(50,50,100,80);
draw.fillRect(50,135,100,80);
draw.fillRect(50,220,100,80);
draw.fillRect(50,305,100,80);
draw.fillRect(50,390,100,80);
draw.fillRect(50,475,100,80);
draw.fillRect(495,50,100,80);
draw.fillRect(495,135,100,80);
draw.fillRect(495,220,100,80);
draw.fillRect(495,305,100,80);
draw.fillRect(495,390,100,80);
draw.fillRect(495,475,100,80);
draw.fillRect(155,50,335,505);
}
примечание: вы вызываете loadScreen(); ... так что, по крайней мере, в этот раз event будет неопределенным



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, что ваша проблема здесь:
loadScreen();
Вы вызываете loadScreen, не передавая ему событие.
Вы можете подделать это, выполнив следующие действия:
loadScreen({keyCode:73});
Обратите внимание, что когда loadScreen настроен для вызова Event здесь:
document.addEventListener('keydown', loadScreen);
… Каждый раз, когда нажимается клавиша клавиатуры, в качестве первого аргумента передается объект event, и этот объект event содержит значение keyCode, соответствующее нажатой клавише.
Мне удалось обернуть ваш код в тестовый HTML-документ, и он создал несколько симпатичных серых прямоугольников:
<!DOCTYPE html>
<html>
<head>
<title>Test of Stackoverflow question 49583733</title>
<script type = "text/javascript">
window.addEventListener('load', () => {
ваш код здесь, добавив {keyCode:73}
}) ;
</script>
</head>
<body>
<canvas id = "canvas"></canvas>
</body>
</html>
keyCodeустарел, вы должны использоватьkey