2017-07-16 7 views
0

jquery easing関数でアニメーションライブラリを書く。 私の問題は、私の開始値が終了値と同じかそれ以上であれば、私の関数dosntが働くことになります。nodejs逆カウント(インクリメント/デクリメント)

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

開始値が、その後、終了値減少数greatherあるとき、私はしたいです。 どうすればイージングライブラリでこれを行うことができますか?

どうもありがとう

+0

実用的なコードスニペットを提供できますか?エラーメッセージが表示されます。 – ideaboxer

答えて

0

あなたの問題は、このラインここ

if(value >= end_value){ 

で、あなたがend_valueに向かって上方つもり前提でそれを書かれています。その代わりに、がend_valueより大きいか小さいかという事実に、その行は無関係でなければなりません。あなたの関数は次のようになります:

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

申し訳ありませんが、このdosntの仕事。ここで、 "イージング"メソッドのソースは "linear"です。function linear(t、b、c、d){return c * t/d + b; } '、私は問題がこの関数だと思います。もしあなたが" linear(0、255、0、1000) "のようにこの関数を呼び出すと、すぐに" 255 " – Marc