我已经编写了下面的函数,该函数应该每隔20ms运行一次,直到颜色渐变完成,但是淡入淡出会立即发生 - 为什么?
function saveColour()
{
if(x<=speedms/frameratems)
{
currentRed=Math.floor((x*deltaRed)+oldRGB[0]);
currentGreen=Math.floor((x*deltaGreen)+oldRGB[1]);
currentBlue=Math.floor((x*deltaBlue)+oldRGB[2]);
document.getElementById(id).style.backgroundColor="rgb("+currentRed+", "+currentGreen+", "+currentBlue+")";
//window.alert("rgb("+currentRed+", "+currentGreen+", "+currentBlue+")");
x++;
setTimeout(saveColour(),frameratems);
}
}
无论我将frameratem设置为什么,setTimeout似乎都会立即运行,我不知道为什么。
谢谢!
答案 0 :(得分:4)
setTimeout期望函数引用作为第一个参数
通过setTimeout(saveColour(),frameratems);
您将saveColour
如果saveColour
返回了一个函数,那就没问题了。
使用
setTimeout(saveColour,frameratems);
代替