2013-04-21 3 views
1

Я пытаюсь собрать простую игру в JavaScript, и я не могу получить прыжки на работу:Прыжки анимации в javascript?

function jump() 
{ 
    isJumping=true; 

    var jumpint= setInterval(function() { 
    ypos=ypos-5; 
    }, 10); 
    if(ypos==150) 
    { 
     isJumping == false; 
     clearInterval(jumpint); 
     jumpint = 0; 
     alert("it works"); 
     return; 

    } 

} 

Всякий раз, когда я называю эту функцию обеспечивает анимацию, и характер движется в правильном направлении, но это не останавливается. Как только ypos будет равен 150, он продолжает двигаться и не выполняет оператор if, и я не могу понять, почему. Очевидно, у меня есть какое-то уравнение, но я хочу, чтобы этот прыжок исполнялся прямо перед тем, как я перехожу дальше.

+0

Если вы разрабатываете игру с HTML5 и '', вы можете использовать' requestAnimationFrame' вместо 'setInterval'. [Посмотрите] (https://developer.mozilla.org/en-US/docs/DOM/window.requestAnimationFrame). – MaxArt

ответ

2

Поместите оператор if внутриsetInterval, иначе он будет выполнен только один раз.

var jumpint = setInterval(function() { 
    ypos=ypos-5; 
    if(ypos==150) 
    { 
     isJumping == false; 
     clearInterval(jumpint); 
     alert("it works"); 
    } 
}, 10); 

Кроме того, возможно, вы захотите изменить состояние на ypos <= 150. Скажем, ypos - 157. Если вы продолжаете уменьшаться на 5, он перейдет 157 -> 152 -> 147 и прыгнет прямо мимо состояния. Чтобы исправить это, просто измените условие if-statement на ypos <= 150.

+0

Почувствуйте себя дебилом, спасибо! –

+0

@PeterJewicz без проблем! :) – Doorknob

+0

@PeterJewicz Если ваш вопрос был правильно ответил, не забудьте принять его (нажмите галочку). – bwroga

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