Я пытаюсь сделать эффект выцветания с помощью JavaScript на элементе Canvas. У меня в настоящее время есть два решения для этого. Теоретически оба должны работать нормально, но на практике только один делает, и мне интересно, почему.Как работает свойство globalAlpha свойства Canvas JavaScript?
не работает код выглядит следующим образом:
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);
}
То, что я хотел добиться, чтобы постепенно изменить значение альфа текущего контекста, чтобы выгорает его белый цвет. Через некоторое время он должен иметь полную прозрачность, но это не так. Он останавливается прямо перед достижением этого состояния. Здесь в 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);
}
С помощью этого кода, я просто изменяя альфа-значение данного FillStyle для предстоящего прямоугольника, и он работает как шарм и превращает квадрат в воздух. Здесь он находится в JSFiddle: https://jsfiddle.net/mxtynwwd/
Я хотел бы понять, почему первое занятие не работает? Почему я не могу снизить значение globalAlpha после заданного минимума? Или проблема в коде?