2016-12-13 3 views
1

В настоящее время я работаю над анимацией Js.Как сделать значение для велосипеда javascript

Поясню:

У меня есть несколько объектов, которые имеют каждую позицию Y this.y. Я хочу, чтобы они двигались так: this.y -= 0.1 с задержкой на каждый.

Проблема: я хочу изменить направление вниз, когда объект переместился до 10 пикселей с его исходного положения (с помощью этого кода this.y += 0.1). Когда он переместится -10px из первоначальной позиции, измените направление вверх (this.y -= 0.1).

Это своего рода велоспорт. Есть идеи ? Я думал, чтобы увеличить чужую переменную, что-то вроде этого:

this.incr = 0; 
this.incr += 0.1; 

if(this.incr == 1){ 
    this.y += 0.1; 
} 

else if(this.incr == -1){ 
    this.y -= 0.1; 
} 

Я знаю, что это не хороший способ, но я не могу найти решение.

ответ

2

Запишите значение delta в свой объект и используйте его для обновления значения для каждого вызова. Если вы достигли предела, измените значение delta.

myObject.update = function() { 
    this.value += this.delta 
    // if `this.value` reaches 1, the update function should subtract 
    // 0.1 on each subsequent call, so set `this.delta` to -0.1 
    if (this.value === 1) 
     this.delta = -0.1 
    // likewise, if `this.value` reaches -1, then the update function 
    // should add 0.1 on each call, so set `this.delta` to 0.1 
    else if (this.value === -1) 
     this.delta = +0.1 
} 

Конечно, это абстракция того, что вам нужно. Вам нужно будет выяснить, как перевести this.value += this.delta (то есть, как должен обновляться объект) и когда нужно переключить значение this.delta в ваше приложение.

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