Сначала давайте изменим способ клонирования GIF - избавьтесь от этой строки:
this.image = walk.cloneNode(false);
и вставьте это:
this.image = document.createElement("img");
Это создаст новый пустой HTMLэлемент изображения.
Теперь присвойте его .src свойству источник вашего gif:
this.image.src=document.getElementById("walk").src;
и установите свойство позиции CSS в absolute :
this.image.style="position:absolute;";
наконец добавьте этот новый элемент изображения в тело, используя:
document.body.appendChild(this.image);
Если вы нажмете Run, вы все равно не увидите никаких движений, потому что есть еще небольшое исправление, которое нужно сделать!
Найдите эту строку:
walkers[o].image.style.left = walkers[o].x;
и измените ее на:
walkers[o].image.style.left = walkers[o].x + "px";
var walk, isWaveSpawned = true;
var walkers = [];
function start() {
walk = document.getElementById("walk");
draw(); //Animation function
}
function draw() {
if (isWaveSpawned) //Generate a wave of 5 "walkers"
{
isWaveSpawned = false;
for (var i = 0; i < 5; i++)
walkers.push(new createWalker());
}
for (var o = 0; o < walkers.length; o++) //Add 1px to x position after each frame
{
walkers[o].x += walkers[o].speed;
walkers[o].image.style.left = walkers[o].x + "px";
walkers[o].image.style.top = walkers[o].y + "px";
}
requestAnimationFrame(draw);
}
function createWalker() {
this.x = 0;
this.y = 100;
this.speed = 1;
this.image = document.createElement("img");
this.image.src = document.getElementById("walk").src;
this.image.style = "position:absolute;";
document.body.appendChild(this.image);
}
start();
<body>
<img id="walk" src="https://i.imgur.com/ArYIIjU.gif">
</body>