我用jquery缓动函数编写了一个litle动画库。 现在我的问题是当我的起始值大于或等于结束值时,我的函数dosnt工作。
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
我希望当起始值更大,然后结束值为减量计数。 我怎么能用缓动的lib来做这个?
非常感谢
答案 0 :(得分:0)
你的问题就在这一行
if(value >= end_value){
在这里,你写的是假设你向end_value
方向前进。相反,该行应该与start_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");
}
...
}