Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Время gif анимации [2]
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Время gif анимации

Страниц (7): « 1 [2] 3 4 5 6 7 »
 

16. Bio man - 04 Июля, 2012 - 15:57:36 - перейти к сообщению
А проиграть по клику есть?
17. DeepVarvar - 04 Июля, 2012 - 16:04:32 - перейти к сообщению
Я не помню - виндовоза в глаза не видел уже года два..
18. IllusionMH - 04 Июля, 2012 - 16:12:26 - перейти к сообщению
Bio man, как крайний вариант, можно на сервере(или где-еще) делать превьюхи, а потом при наведении подменять src, (предварительно подгрузив в фоне) и тогда начнется проигрывание

upd. Возможно превьюху первого кадра можно будет сделать через canvas (вечером попытаюсь глянуть), но это не поможет со старыми браузерами.
19. Zuldek - 04 Июля, 2012 - 16:15:22 - перейти к сообщению
DeepVarvar пишет:
проиграть по наведению.
Все это вшивается в гифку и вуаля - никакого js не нужно.

Это делается средствами JS. на выходе imageReady выдает html c готовым js-кодом и включаемым gif-файлом.
(Замечу, что это не означает, что нельзя включить работающий Js-код в файл изображения Подмигивание )
Проигрывание 1 раз или более, - это да, указывается в самом файле средствами формата.
20. Bio man - 04 Июля, 2012 - 16:22:21 - перейти к сообщению
в фотошопе есть имадж реди?
21. Zuldek - 04 Июля, 2012 - 16:27:44 - перейти к сообщению
Bio man пишет:
в фотошопе есть имейдж реди?
смотря в какой версии в CS 2 он отдельно, а в CS5 вроде уже весь функционал в один фотошоп встроен.
22. Bio man - 04 Июля, 2012 - 19:13:51 - перейти к сообщению
Страница загружается, все гифки подгружаются, анимация не циклическая. Нажимаю и появляется уже отработанная гифка! как сделать, что бы при нажатии гифка опять проигрывалась?
23. DeepVarvar - 04 Июля, 2012 - 20:07:34 - перейти к сообщению
А в ImageReady (или где там теперь) все правильно сделано? Может там гдето какую хитрую галочку надо проставить или еще что?
24. Bio man - 04 Июля, 2012 - 20:27:24 - перейти к сообщению
DeepVarvar
я не через ImageReady, просто нативный JS написаный на коленке для теста. Установлю прогу посмотрю, но может все таки как то руками можно сделать?
25. DlTA - 04 Июля, 2012 - 20:36:50 - перейти к сообщению
таки через задницу идет решение

как было упомянуто выше, готовится превьюха можно даже jpg и анимированная гифка в которой задано количество повторений 1
и при наведении/клике средствами js/css производить подмену
проблема может возникнуть в обратной подмене, для подготовки ко второму клику,
но если все гифки стандартизировать, так чтоб знать их длительность (хотяб максимальную) то в принцыпе проблем больше быть не должно

лучше конечно подмену производить средствами JS, чтоб потом делать обратное преобразование.
26. Bio man - 04 Июля, 2012 - 22:17:49 - перейти к сообщению
DlTA пишет:
таки через задницу идет решение
а с превьюхами значит не через задницу, да?
Нужно загрузить ВСЕ гифки (в скрытых полях), что бы не было задержки от загрузки картинок. Затем при каждом наведении/клике отображать и проигрывать определенную гифку. Хрен с ним со временем, где то 1 сек будет.
Может все таки есть решение?
27. armancho7777777 - 05 Июля, 2012 - 03:14:30 - перейти к сообщению
Bio man, а если анимацию реализовать путём использования спрайта из кадров гифки,
контейнера из div-а с фиксированной шириной по размеру одного кадра
и функции setInterval(), меняя background-position контейнера покадрово.
А останавливать анимацию с помощью clearInterval().

На пример:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var setAnimate, flag = 0;
  3.  
  4. function my_animat()
  5. {
  6.       var animate_conteiner = $('#animate-conteiner'),
  7.           t = 0, // Позиция фона по вертикали
  8.           H = 128, // Высота кадра и самого контейнера
  9.           sprH = 3840, // Высота спрайта
  10.           speed = 25; // Скорость анимации (40 кадров в секунду)
  11.  
  12.           if(flag == 0)
  13.           {
  14.                   flag = 1;
  15.                  
  16.                   setAnimate = setInterval(function(){
  17.                            
  18.                          t += H;
  19.                          if(t == sprH) t = 0;
  20.                          animate_conteiner.css({'background-position':'0 -'+t+'px'});
  21.  
  22.                   }, speed);
  23.           }
  24. }  
  25.  
  26.  
  27. function stop_animat()
  28. {
  29.     if(flag == 1)
  30.     {
  31.         flag = 0;
  32.         clearInterval(setAnimate);
  33.     }
  34. }
  35.  
  36.  
  37. $(function(){
  38.  
  39.         my_animat();
  40.        
  41.        
  42.         // Запуск анимации
  43.         $('#btn-start').click(function(e) {
  44.                 my_animat();
  45.         });
  46.        
  47.        
  48.         // Остантовка анимации
  49.         $('#btn-stop').click(function(e) {
  50.                 stop_animat();
  51.         });
  52.  
  53. });
  54.  


CODE (css):
скопировать код в буфер обмена
  1.  
  2. #animate-conteiner {
  3.         width:128px;
  4.         height:128px;
  5.         background:url(sprite.gif) 0 0 no-repeat;
  6.         }
  7.  
28. armancho7777777 - 05 Июля, 2012 - 05:20:56 - перейти к сообщению
Живой пример

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

P.S. Плюсы такой анимации:
ну, по крайней мере в том, что можно использовать полупрозрачные png Улыбка
Ну и анимация более подконтрольна из скрипта.
29. DeepVarvar - 05 Июля, 2012 - 06:28:59 - перейти к сообщению
armancho7777777, отличная идея. А я и забыл что у меня была когда-то wave-картинка от звуковой дорожки и я её горизонтальное смещение анимировал почти таким способом создавая loop.
30. armancho7777777 - 05 Июля, 2012 - 07:01:25 - перейти к сообщению
DeepVarvar пишет:
armancho7777777, отличная идея

Спасибо DeepVarvar Улыбка

 

Powered by ExBB FM 1.0 RC1