2016-12-13 9 views
1

Ich arbeite derzeit an einer Js-Animation.Wie mache ich einen Radsport Wert Javascript

Lassen Sie mich erklären:

ich mehrere Objekte haben, die jede Y-Position haben this.y. Ich möchte sie mit einer Verzögerung auf diese Weise this.y -= 0.1 in Bewegung bringen.

Problem: Ich möchte die Richtung nach unten ändern, wenn das Objekt bis zu 10px von seiner ursprünglichen Position (mit diesem Code this.y += 0.1) verschoben wurde. Verschieben Sie die Richtung nach oben (this.y -= 0.1), wenn -10px von der ursprünglichen Position verschoben wurde.

Es ist eine Art Radwert. Irgendeine Idee ? Ich dachte, eine andere Variable, um so etwas zu erhöhen:

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

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

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

Ich weiß es ist nicht die gute Art und Weise, aber ich kann nicht die Lösung finden.

Antwort

2

Notieren Sie einen delta Wert in Ihrem Objekt und verwenden Sie es, um den Wert bei jedem Aufruf zu aktualisieren. Wenn Sie das Limit erreicht haben, ändern Sie den Wert von 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 
} 

Natürlich ist dies eine Abstraktion von dem, wonach Sie suchen. Sie werden herausfinden müssen, wie Sie this.value += this.delta übersetzen (dh, wie das Objekt aktualisiert werden soll) und wann Sie den Wert this.delta in Ihre Anwendung umwandeln können.

Verwandte Themen