(HTML) Браузер Рендеринг GIF-файлов медленно - PullRequest
0 голосов
/ 03 февраля 2011

Я создал GIF-файл движения и внедрил его в кнопку веб-страницы с помощью некоторого JavaScript-ролловера (кнопка статична, пока не перевернут, а затем переключается на предварительно загруженное однократное анимированное изображение).Он работает отлично, но единственная проблема в том, что частота кадров немного ниже, чем я ожидал.В Фотошопе я установил время «Без задержки», так что я думаю, что это может быть ограничением GIF в целом?Или это ограничение, которое устанавливает браузер?У кого-нибудь есть информация по этому или обходной путь?Размер файла составляет <100 КБ с примерно 5 кадрами, поэтому я чувствую, что его код связан? </p>

Мой Javascript:

<script type="text/javascript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>

Зак

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Практически невозможно точно контролировать частоту кадров GIF, так как воспроизведение варьируется в зависимости от множества факторов, таких как браузер, соединение, скорость, скорость компьютера и т. Д. Если вы хотите точно контролировать анимацию, я рекомендую использовать спрайт-полосы и библиотекунапример, http://spritely.net/ для jQuery.

0 голосов
/ 10 марта 2011

Сделайте несколько копий .gif с различными настройками сжатия и поместите их на сервер тестирования.

Таким образом, вы можете наблюдать время загрузки одного и того же GIF-файла с разными размерами файлов, что может помочь вам сузить проблему.

Мы хотим уточнить, является ли параметр сжатия актива (размер файла) или кодом, который загружает актив во время выполнения.

Если вы подтвердите, что это код, я бы предварительно загрузил / кэшировал .gif.

...