2014-03-27 4 views
1

Это мой jsfiddle: http://jsfiddle.net/Z7a5h/установки времени задержки между двумя кадра при анимации спрайта лист

Как вы можете увидеть анимацию спрайта листа, когда игрок не движется слишком быстро, так что я пытался сделать он медленно, объявив две переменные lastRenderTime: 0,RenderRate: 50000

, но мой код не работает, и, похоже, у меня есть непонимание алгоритма, который я использую, может ли кто-нибудь заложить мне руку, как я могу это исправить?

if (!this.IsWaiting) { 
    this.IsWaiting = true; 
    this.Pos = 1 + (this.Pos + 1) % 3; 
} 
else { 
    var now = Date.now(); 
    if (now - this.lastRenderTime < this.RenderRate) this.IsWaiting = false; 
     this.lastRenderTime = now; 
} 

ответ

0

Да, ваша логика неправильная. Вы использовали неправильный оператор < вместо >. Кроме того, вам нужно было обновить lastRenderTime только в том случае, если условие выполнено, в противном случае оно продолжает обновляться, а значение now - this.lastRenderTime никогда не станет больше 20 или около того.

if (!this.IsWaiting) { 
    this.IsWaiting = true; 
    this.Pos = 1 + (this.Pos + 1) % 3; 
} 
else { 
    var now = Date.now(); 
    if (now - this.lastRenderTime > this.RenderRate) { 
     this.IsWaiting = false; 
     this.lastRenderTime = now; 
    } 
} 

Обновлено fiddle.

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