//颜色渐变方法
function fadeColor( from, to, callback, duration, totalFrames) {
//用一个函数来包裹setTimeout,根据帧数来确定延时
function doTimeout(color,frame) {
setTimeout(function() {
try {
callback(color);
} catch(e) {
JSLog.write(e);
}
}, (duration*1000/totalFrames)*frame);
//总持续秒数/每秒帧数*当前帧数=延时(秒),再乘以1000作为延时(毫秒)
}
// 整个渐变过程的持续时间,默认为1秒
var duration = duration || 1;
// 总帧数,默认为持续秒数*15帧,也即每秒15帧
var totalFrames = totalFrames || duration*15;
var r,g,b;
var frame = 1;
//在第0帧设置起始颜色
doTimeout('rgb(' + from.r + ',' + from.g + ',' + from.b + ')',0);
//计算每次变化所需要改变的rgb值
while (frame < totalFrames+1) {
r = Math.ceil(from.r * ((totalFrames-frame)/totalFrames)
+ to.r * (frame/totalFrames));
g = Math.ceil(from.g * ((totalFrames-frame)/totalFrames)
+ to.g * (frame/totalFrames));
b = Math.ceil(from.b * ((totalFrames-frame)/totalFrames)
+ to.b * (frame/totalFrames));
// 调用本frame的doTimeout
doTimeout('rgb(' + r + ',' + g + ',' + b + ')',frame);
frame++;
}
}
//使用方法
fadeColor(
{r:255,g:255,b:134}, //star color
{r:255,g:255,b:255}, //end color
function(color) {
document.getElementById("left").style.backgroundColor = color;
},
1
);
function fadeColor( from, to, callback, duration, totalFrames) {
//用一个函数来包裹setTimeout,根据帧数来确定延时
function doTimeout(color,frame) {
setTimeout(function() {
try {
callback(color);
} catch(e) {
JSLog.write(e);
}
}, (duration*1000/totalFrames)*frame);
//总持续秒数/每秒帧数*当前帧数=延时(秒),再乘以1000作为延时(毫秒)
}
// 整个渐变过程的持续时间,默认为1秒
var duration = duration || 1;
// 总帧数,默认为持续秒数*15帧,也即每秒15帧
var totalFrames = totalFrames || duration*15;
var r,g,b;
var frame = 1;
//在第0帧设置起始颜色
doTimeout('rgb(' + from.r + ',' + from.g + ',' + from.b + ')',0);
//计算每次变化所需要改变的rgb值
while (frame < totalFrames+1) {
r = Math.ceil(from.r * ((totalFrames-frame)/totalFrames)
+ to.r * (frame/totalFrames));
g = Math.ceil(from.g * ((totalFrames-frame)/totalFrames)
+ to.g * (frame/totalFrames));
b = Math.ceil(from.b * ((totalFrames-frame)/totalFrames)
+ to.b * (frame/totalFrames));
// 调用本frame的doTimeout
doTimeout('rgb(' + r + ',' + g + ',' + b + ')',frame);
frame++;
}
}
//使用方法
fadeColor(
{r:255,g:255,b:134}, //star color
{r:255,g:255,b:255}, //end color
function(color) {
document.getElementById("left").style.backgroundColor = color;
},
1
);