Я впервые работаю с анимацией холста, и у меня возникла проблема при попытке анимировать несколько изображений одновременно.
Я могу нарисовать несколько изображений на холсте и расположить их случайным образом. Я могу получить одно изображение для анимации на холсте, но только последнее изображение, нарисованное из массива.
Я знаю, что проблема в том, что clearRect () очищает все ранее нарисованные изображения из указанного массива, но не могу понять, как очиститьRect только после того, как все изображения были нарисованы в каждом кадре анимации, мне было интересно, сталкивался ли кто-нибудь с что-то вроде этого раньше, и если бы они могли указать мне правильное направление, как только clearRect () после того, как все изображения нарисованы?
function animate() {
srequestAnimationFrame(animate);
for(let i = 0; i < images.length; i++) {
let y = images[i].y;
let img = new Image();
img.src = images[i].url;
img.onload = function() {
// This is clearing all images drawn before the last image
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(this, images[i].x, y, images[i].width, images[i].height);
}
images[i].y -= 1;
if(images[i].y < (0 - images[i].height)) {
images[i].y = window.innerHeight;
images[i].x = (Math.random() * (canvas.width - 160));
}
}
}
Я хотел бы анимировать все изображения по вертикали вверх страницы, чтобы они сбрасывались в нижнюю часть после достижения верхней части экрана, у меня это работает, но только для последнего изображения, как упомянуто выше