Попытка обернуть голову вокруг холста HTML5, я подумал, что создаю карусель изображений, где изображения будут изменены с помощью градиента прозрачности, то есть то же самое, что и в моей скрипке here, только с холстом. Мне удалось найти this fiddle, но я не могу понять, что происходит, точнее, почему ничего нет.Анимированный переход изображения с холстом HTML5
Вот код:
var outputCanvas = document.getElementById('output'),
ctx = outputCanvas.getContext('2d'),
eWidth = 50,
speed = 5,
cWidth = 480,
img = document.getElementById('newimg'),
x = 0, y = 0,
reqAnimFrame = window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame;
ctx.drawImage(img, 0, 0, img.width, img.height);
ctx.globalCompositeOperation = "destination-out";
function draw() {
console.log(x);
gradient = ctx.createLinearGradient(x, 0, x+eWidth, 0);
gradient.addColorStop(0, "rgba(255, 255, 255, 0)");
gradient.addColorStop(1, "rgba(255, 255, 255, 1)");
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, img.width, img.height);
}
function animate() {
if (x < 480) {
x += Math.floor((cWidth/1000) * speed);
console.log(x);
draw();
reqAnimFrame(animate);
}
}
reqAnimFrame(animate);
Вызов функции draw
сама по себе она, кажется, работает, но как только я начинаю стрелять из него с RequestAnimationFrame
он просто перестает работать. Градиент рисуется один раз, но хотя x
обновляется в цикле анимации, градиент остается помещенным.
Я думаю, что есть что-то, что я просто не понимаю, как работают холсты и RequestAnimationFrame
.
Обратите внимание, что я не ищу скрипт или библиотеку, которая делает то же самое, но я надеюсь, что на самом деле пойму, как работает холст, и, в частности, почему мой сценарий не работает.
С одной стороны, 'reqAnimFrame (живой),' должен быть 'requestAnimationFrame (одушевленные);' – markE
@markE К сожалению , Я забыл вставить бит, где определен 'reqAnimFrame'. Я не думаю, что в этом проблема. – Schlaus
Что именно делает 'console.log (x)' output? – soktinpk