Чтобы анимация была максимально плавной, вы должны использовать CSS-спрайт, изображение, содержащее все остальные ваши изображения, чтобы все кадры были загружены при запуске анимации.
Тогда вам нужно тольковызывать функцию за заданный промежуток времени, основываясь на том, насколько плавной должна быть анимация, и изменять свойство фона вашего изображения.Или, если не используется спрайт, назначьте ему другой src.
Я думаю, вам следует выбирать значение частоты кадров не менее 25. Чем выше частота кадров, тем более плавная анимация, но больше используется процессор.
Это базовый подход
function next_frame() {
frame += 1;
// start animation again from the start if last frame reached (optional)
if ( frame == max_frames ) {
frame = 0;
}
/* change either the class of your image (if you use sprites
and specified a class for each background position) or the
background position property directly. If not using sprites,
assign a different image src based on current frame.
*/
// call the function again
setTimeout( next_frame, 1000 / 25 ); // change 25 with your desired FPS value.
}
Если вы хотите, чтобы изображение анимировалось назад, вам просто нужно применить тот же подход, но с номерами кадров, идущими назад.