我想在Canvas元素上使用JavaScript进行淡出效果。我目前有两个解决方案。理论上,两者都应该正常工作,但在实践中,只有一个可以,我想知道为什么。JavaScript Canvas globalAlpha属性如何工作?
的不工作的代码如下:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var i = 1;
requestAnimationFrame(test);
function test(){
i-=0.01;
ctx.fillStyle = "white";
ctx.fillRect(20, 20, 75, 50);
ctx.globalAlpha = i;
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 75, 50);
requestAnimationFrame(test);
}
我想实现的,就是要逐步改变当前上下文的Alpha值,以便将其褪色成白色。过了一段时间,它应该具有完全的透明度,但不是。它在达到该状态之前停止。这是的jsfiddle:https://jsfiddle.net/bq75v1mm/
工作代码如下:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var i = 1;
requestAnimationFrame(test);
function test(){
i-=0.01;
ctx.fillStyle = "white";
ctx.fillRect(20, 20, 75, 50);
ctx.fillStyle = "rgba("+255+","+0+","+0+","+i+")";
ctx.fillRect(20, 20, 75, 50);
requestAnimationFrame(test);
}
有了这个代码,我只是简单地改变给定的填充样式的Alpha值为即将到来的矩形,它像魅力一样工作,并使广场消失在空气中。在这里它是在JSFiddle:https://jsfiddle.net/mxtynwwd/
我想了解为什么不首次溶出工作?为什么我不能在给定的最小值后降低globalAlpha值?或者是代码中的问题?