【发布时间】:2020-07-31 22:35:34
【问题描述】:
我正在尝试编写一个从红色、绿色和蓝色切换的循环,但是当它达到一种颜色的 255 时,它会变成黑色。
我被函数 change() 卡住了,如何指定函数调用内部函数(turnRed、turnGreen、turnBlue)的确切时间?
var r = 0;
var g = 0;
var b = 0;
var dir = true;
function turnRed(){
if (dir == true){
r < 256 ? r++ : 0;
if (r == 255){
dir = false;
}else{
turnBlack;
}
}
}
function turnGreen(){
if (dir == true){
g < 256 ? g++ : 0;
if (g == 255){
dir = false;
}else{
turnBlack;
}
}
}
function turnBlue(){
if (dir == true){
b < 256 ? b++ : 0;
if (b == 255){
dir = false;
} else{
turnBlack;
}
}
}
function turnBlack(){
b > 0 ? b-- : 0;
if (b == 0){
dir = true;
}
g > 0 ? g-- : 0;
if (g == 0){
dir = true;
}
r > 0 ? r-- : 0;
if (r == 0){
dir = true;
}
}
function change() {
color = 'rgb('+r+', '+g+', '+b+')';
document.body.style.backgroundColor = color;
setTimeout(turnRed, 1000);
clearInterval();
//then
setTimeout(turnGreen, 1000);
clearInterval();
//then
setTimeout(turnBlue, 1000);
clearInterval();
}
setInterval(change, 10);
clearInterval();
我的逻辑:如果我将 setTimeout(function, time) 放入 setInterval,它将调用该函数一次,并且 setInterval 将在循环中运行更改颜色,但在我的情况下,该函数只运行一次并停止。
【问题讨论】:
标签: javascript animation frontend