Я собираюсь ответить на ваш вопрос, но я должен предположить, что вы знакомы с Jquery, у меня была эта проблема некоторое время назад, но я понял, что из-за ограничений javascript вам, возможно, придется создать две анимациикак вы сказали ... и обратите внимание, что ваши анимации необходимо экспортировать в виде анимированных GIF-файлов, в противном случае использование видео или какой-либо сложной графики будет громоздким или тяжелым.
Циклическая анимация и конечная анимация.теперь хитрость заключается в том, чтобы загрузить их обоих вместе, но скрыть одну и отобразить другую, когда событие инициируется ...
Обе анимации имеют одинаковые свойства, в основном размеры и положение.поэтому, когда идет загрузка - вы делаете циклическую анимацию видимой и скрываете конечную анимацию.затем, когда загрузка заканчивается, вы делаете видимую конечную анимацию и скрываете зацикленную анимацию.и последняя часть состоит в том, чтобы медленно убивать конечную анимацию, пока она воспроизводится до конца ... - вы используете javascript setTimeout или setInterval, потому что вы не можете добавлять события в кадры вашей анимации, но вы можете определить время и передать событиекогда придет время ..
используя jquery, это то, что я бы сделал.
Допустим, у вас есть два тега div с изображениями GIF в них ..., расположенные в любом месте страницы.
// loopDiv - loop_animation.gif
<div id="loopDiv"> <img src="images/animations/loop_animation.gif"/> </div>
// endDiv - end_animation.gif, - and this plays for 6 seconds.
<div id="endDiv"> <img src="/images/animations/end_animation.gif"/> </div>
// когда идет загрузка
var endt = 20000; //20seconds 20 * 1000 milliseconds.
function doProgress(){
clearInterval(endt); //always clear the interval before starting.
$('#loopDiv').show();
$('#endDiv').hide();
}
function endProgress(){
$('#loopDiv').hide();
$('#endDiv').show();
setInterval(function(){
$('#endDiv').hide();
}, endt); //hide the div after 20seconds
}
, если вы получаете это правильно, это должно работать, но если вы хотите продвинутое решение, выможно использовать CreateJs - библиотека EaselJs и использовать API Canvas.используя API Canvas, вы можете смоделировать сложную анимацию с входящими событиями, а также ..
Я надеюсь, что ответил правильно.веселит.