Я работаю над заданием школы, чтобы сделать небольшую игру, используя холст HTML5 и Javascript. Идея основана на космических захватчиках, но с воздушными змеями (я знаю, действительно, задира). Поэтому я получил кайт, двигаясь с нажатием клавиши, и теперь я хочу, чтобы он показывал другое изображение при нажатии слева и справа (змеи сгибаются влево и вправо).Изменить картинку на клавиатуре
Я получил изображение левого кайта на экране, но также показывает нормальный змей. Также при нажатии клавиш влево и вправо все еще нет разницы.
Нужно ли добавить еще одну функцию для рисования левого кайта отдельно? Или добавить оператор if, когда ключ является истинным рисунком? Это все может быть не так, но я как бы застрял здесь.
Вот мой код
const FPS = 30;
var canvas = null;
var context = null;
window.onload = init ;
function init() {
canvas = document.getElementById('gameCanvas');
context = canvas.getContext('2d');
setInterval(loop, 1000/FPS);
// register keyboard events
window.addEventListener("keydown", onKeyDown);
window.addEventListener("keyup", onKeyUp);
// Initialize the player object
player.vx = 0;
player.vy = 0;
player.image = new Image();
player.image.src = "./kite.png";
player.imgLeft = new Image();
player.imgLeft.src = "./kite-links.png";
player.x = canvas.width/2 - player.image.width/2;
player.y = canvas.height/1.3 - player.image.height/2;
player.speed = 10;
}
var player = Object(); // Initialize a player object
// Things to do when keys are down
function onKeyDown(event)
{
if (event.keyCode >= 37 && event.keyCode<=39)
event.preventDefault(); // prevent arrow keys from scrolling the page
switch (event.keyCode) {
case 37: player.vx = -1; break; // left key pressed
case 38: player.vy = -1; break; // up key pressed
case 39: player.vx = 1; break; // right key pressed
}
}
// Things to do when keys are up
function onKeyUp(event)
{
switch (event.keyCode) {
case 37: case 39: player.vx = 0; break; // left or right key released
case 38: player.vy = 0; break; // up or down key released
}
}
function update(){
// update all your objects here
player.x += player.vx * player.speed; // update player position
player.y += player.vy * player.speed;
}
function draw(){
// clear the screen
context.clearRect(0, 0, canvas.width, canvas.height);
// draw all your objects here
context.drawImage(player.image, player.x, player.y, player.image.width, player.image.height);
context.drawImage(player.imgLeft, player.x, player.y, player.image.width, player.image.height);
}
function loop() {
update();
draw();
}
Я добавил ваш код и заменил его моим, но теперь кайт вообще не отображается .. –
Да, я не знаю, почему ваш не работает. Я только что скопировал ваш код и поставил то, что написал, и он отлично работает. – jonhopkins
Пока ничего не показывает. Ваша идея звучит очень логично! Хммм, я буду продолжать пытаться –