2013-04-02 2 views
1

Я работаю над маленькой игрой, используя холст HTML5 и javascript. Теперь я пытаюсь сделать изображение движением слева направо, а при нажатии клавиши оно меняет изображение, чтобы оно выглядело больше похоже на движение.Как изменить изображение при выпуске ключа

Теперь я получил эту работу, но я как бы застрял. Код заключается в том, что когда вы нажимаете левую клавишу, он меняет player.image на player.imgLeft и при отпускании меняет его на нормальное изображение.

Прессование работает, но освобождение не делает. Что я делаю неправильно?

Вот короче код

// 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; player.image = player.imgLeft; break; // left key 
case 38: player.vy = -1; break; // up key 
case 39: player.vx = 1; player.image = player.imgRight; break; // right key 
} 
} 


// Things to do when keys are up 
function onKeyUp(event) 
{ 
switch (event.keyCode) { 
    case 37: case 39: player.vx = 0; player.imgLeft = player.image; break; // left or right key released 
    case 38: player.vy = 0; break; // up or down key released 
    } 
} 
+0

Вы связывание обработчиков событий? Почему вы говорите, что это не работает? –

+0

owh я вижу игрока.imgRight отсутствует .. –

ответ

1

Modify как это, если у вас есть исходное изображение в player.original .. OnKeyUp событие, которое вы должны использовать, как это ...

function onKeyUp(event) 
{ 
switch (event.keyCode) { 
    case 37: case 39: player.vx = 0; player.image = player.original; break; // left or right key released 
    case 38: player.vy = 0; break; // up or down key released 
    } 
} 
+0

Спасибо, что это работает !!! –

+0

Вы поняли причину своей проблемы ... ?? –

+1

Да, я фактически заменил переменную той же переменной, которая не покажет мне другое изображение. Спасибо за помощь ! –

0

При нажатии на кнопку, вы

player.image = player.imgLeft 

и когда вы отпустите, вы делаете

player.imgLeft = player.image; 

, который ничего не делает, так как обе переменные имеют одинаковое значение. Вам понадобится третья переменная для хранения исходного значения player.image.

+0

Oke спасибо! Попробуем это –

+0

. Я сделал другую переменную, которая содержит исходное изображение, но при произнесении player.imgLeft = player.original левое нажатие больше не меняет изображение. –

0

Помните:

Если вы используете OnKeyDown = "возвращение OnKeyDown (событие)" вам нужно OnKeyUp = "возвращение OnKeyUp (событие)".

Смежные вопросы