2017-07-16 3 views
0

Ich schreibe eine kleine Animation lib mit den jquery Beschleunigungsfunktionen. Nun habe ich das Problem, wenn mein Startwert größer oder gleich wie der Endwert ist, funktioniert meine Funktion nicht.nodejs Rückwärtszählen (Inkrementieren/Dekrementieren)

var easing = require("../easing.js").ease; 
 

 

 
function fade(start_value, end_value, duration) { 
 

 
    var interval = 46; 
 
    var time = 0; 
 

 

 
    setInterval(function() { 
 

 
    // calc current time 
 
    time = time + interval; 
 

 
    // call easing lib 
 
    value = easing["linear"](time, start_value, end_value, duration); 
 
    value = Math.round(value); 
 
    
 
    if(value >= end_value){ 
 
     clearInterval(this); 
 
     console.log("Done"); 
 
    } 
 
    
 
    console.log(value); 
 

 
    }, interval); 
 
} 
 

 

 
fade(255, 0, 1000); // 255 immediately 
 
fade(0, 255, 1000); // 0 to 255 in 1s

ich will, wenn der Startwert eine Abnahmezahl greather ist dann der Endwert. Wie kann ich das mit der easing lib machen?

Vielen Dank

+0

Können Sie ein funktionsfähiges Code-Snippet bereitstellen? Ich erhalte eine Fehlermeldung. – ideaboxer

Antwort

0

Ihr Problem diese Linie

if(value >= end_value){ 

Hier ist, sind Sie es unter der Annahme geschrieben, dass Sie nach oben in Richtung end_value gehen. Stattdessen sollte die Linie agnostisch sein, ob start_value größer oder kleiner als end_value ist oder nicht. Ihre Funktion sollte wie folgt lauten:

function fade(start_value, end_value, duration) { 

    ... 

    var min_value = Math.min(start_value, end_value); 
    var max_value = Math.max(start_value, end_value); 

    ... 

    // Stop the animation when out of range 
    if (value <= min_value || value >= max_value) { 
    clearInterval(this); 
    console.log("Done"); 
    } 

    ... 

} 
+0

Sorry, aber das funktioniert nicht. Hier die Quelle von der "Lockerungs" -Methode "linear": "Funktion linear (t, b, c, d) {Rückkehr c * t/d + b; } ', ich denke, das Problem ist diese Funktion, wenn Sie diese Funktion wie" linear (0, 255, 0, 1000) "aufrufen, wird sofort" 255 "zurückgegeben – Marc