我想把一个矩形的颜色从“黄色”改为“蓝色”。我使用fillStyle
和rgb来实现。
var
canvas = document.getElementById('mycanvas'),
ctx = document.getElementById('mycanvas').getContext('2d'),
red = 255,
blue = 0,
green = 179,
inc = 2;
function animate(){
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.beginPath();
ctx.rect(100, 100, 100, 100);
ctx.fillStyle = 'rgb('+ red +','+ green +','+ blue +')';
ctx.fill();
ctx.closePath();
red = Math.min(Math.max(red - inc, 36))
green = Math.max(green, Math.min(182, green + inc));
blue = Math.max(blue, Math.min(255, blue + inc));
requestAnimationFrame(animate);
}
animate();
这个想法是通过添加或减去名为inc(等于2)的变量来改变rgb的值。问题是,在矩形达到蓝色之前,它还会得到其他颜色(例如绿色)。这是因为绿色仅增加3个单位,但其他颜色仍需要时间来获取其新值。 示例: http://jsfiddle.net/f2Za8/ 有没有办法使“绿色”与“红色”和“蓝色”同时达到其新值?如何做到这一点?