Jump to content

SVG-анимация

(Перенаправлено из анимированного SVG )

Анимация масштабируемой векторной графики , открытого на основе XML, стандартного формата векторной графики возможна различными способами:

Библиотеки также были написаны как оболочка, обеспечивающая поддержку SMIL в современных браузерах с поддержкой SVG. [ 9 ] Этот метод также известен как SVG+Time. [ нужна ссылка ]

Поскольку SVG поддерживает переносимую сетевую графику (PNG) и растровые изображения JPEG , его можно использовать для анимации таких изображений в качестве альтернативы APNG и сетевой графике с несколькими изображениями (MNG).

Элементы анимации SVG были разработаны в сотрудничестве с рабочей группой, опубликовавшей несколько версий Synchronized Multimedia Integration Language (SMIL). Рабочая группа SYMM (в сотрудничестве с рабочей группой SVG) разработала спецификацию SMIL Animation, которая представляет собой набор функций XML- анимации общего назначения. SVG включает в себя функции анимации, определенные в спецификации SMIL Animation, и предоставляет некоторые расширения, специфичные для SVG.

В июне 1998 года «Рабочая группа по синхронизированному мультимедиа» (известная как «SYMM») [ 10 ] ) в рамках Консорциума Всемирной паутины («W3C») опубликовала первую рекомендуемую версию спецификации, известную как «SMIL 1.0». [ 11 ] [ 12 ] Вскоре после публикации SMIL 1.0 в 1998 году группа компаний во главе с Microsoft опубликовала « Интерактивные мультимедийные расширения по времени для HTML (HTML+TIME); расширение SMIL в веб-браузере ». [ 13 ] В течение следующих двух лет ведущий автор HTML+TIME (Патрик Шмитц) работал с рабочей группой SYMM, а также с рабочей группой SVG. Вскоре после публикации SMIL 2.0 Шмитц и соавтор Аарон Коэн (из Intel ) опубликовали SMIL Animation 4 сентября 2001 года. [ 14 ] [ 15 ] SVG 1.0 также стал рекомендацией W3C 4 сентября 2001 года.

Некоторые веб-браузеры добавили поддержку анимации SVG в 2000-х годах, включая Amaya еще в 2003 году, но анимация SVG поддерживалась только широко используемыми браузерами, начиная с 2010-х годов, особенно Firefox 4 (2011). Internet Explorer поддерживает анимацию ECMAScript, а его преемник Microsoft Edge поддерживает анимацию ECMAScript и CSS, начиная с версии 42.17134.

Следующие фрагменты кода демонстрируют три метода создания анимированных изображений SVG в совместимых браузерах. Соответствующие части выделены желтым цветом. Нажмите на миниатюры изображений, чтобы просмотреть их анимированные версии.

SVG-анимация с использованием SMILE

[ редактировать ]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
 width="100%" height="100%" viewBox="-4 -4 8 8">
 <title>SVG animation using SMIL</title>
 <circle cx="0" cy="1" r="2" stroke="red" fill="none">
  <animateTransform
   attributeName="transform"
   attributeType="XML"
   type="rotate"
   from="0"
   to="360"
   dur="1s"
   repeatCount="indefinite"/>
 </circle>
</svg>

SVG-анимация с использованием CSS

[ редактировать ]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
 width="100%" height="100%" viewBox="-4 -4 8 8">
 <title>SVG animation using CSS</title>
 <style>
  @keyframes rot_kf {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
  }
  .rot { animation: rot_kf 1s linear infinite; }
 </style>
 <circle class="rot" 
  cx="0" cy="1" r="2" stroke="blue" fill="none"/>
</svg>

SVG-анимация с использованием ECMAScript.

[ редактировать ]
Рисунок уличного фонаря, который может быть интерактивным
Светофор, анимированный с использованием SVG-анимации и Javascript.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="-4 -4 8 8" onload="rotate(evt)">
 <title>SVG animation using ECMAScript</title>
 <script>
  function rotate(evt) {
   const object = evt.target.ownerDocument.getElementById('rot');
   setInterval(() => {
     const now          = new Date();
     const milliseconds = now.getTime() % 1000;
     const degrees      = milliseconds * 0.36; // 360 degrees in 1000 ms
     object.setAttribute('transform', `rotate(${degrees})`);
    }, 20);
  }
 </script>
 <circle id="rot" 
  cx="0" cy="1" r="2" stroke="green" fill="none"/>
</svg>

Хотя приведенный выше пример работает, это не оптимальная реализация; анимация ограничена 50 кадрами в секунду (FPS). С использованием requestAnimationFrame обеспечивает лучшую производительность и может достигать 60 FPS:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="-4 -4 8 8" onload="init()">
  <title>SVG animation using requestAnimationFrame()</title>
  <script>
    let object;
   
    function init() {
      object = document.getElementById('rot');     
      window.requestAnimationFrame(rotate);
    }
   
    function rotate(timestamp) {
      const milliseconds = timestamp % 1000;
      const degrees      = milliseconds * 0.36; // 360 degrees in 1000 ms
      object.setAttribute('transform', `rotate(${degrees})`);
      window.requestAnimationFrame(rotate);
    }
  </script>
  <circle id="rot" cx="0" cy="1" r="2" stroke="green" fill="none"/>
</svg>

Атрибуты SMIL для идентификации целевого атрибута

[ редактировать ]

Ниже приведен атрибут анимации, который идентифицирует целевой атрибут для данного целевого элемента, значение которого меняется со временем. attributeName = "<attributeName>" указывает имя целевого атрибута. Префикс XMLNS может использоваться для указания пространства имен XML для атрибута. Префикс будет интерпретироваться в рамках текущего элемента анимации.

attributeType = "CSS | XML | auto" указывает пространство имен, в котором определены целевой атрибут и связанные с ним значения. CSS указывает, что значение «attributeName» — это имя свойства CSS, определенного в этой спецификации как анимируемое. XML указывает, что значение 'attributeName' является именем атрибута XML, определенного в пространстве имен XML по умолчанию для целевого элемента. В этой спецификации атрибут должен быть определен как анимируемый. auto Значение по умолчанию — «авто». Реализация должна сопоставлять «Имя атрибута» с атрибутом целевого элемента. Реализация должна сначала выполнить поиск соответствующего имени свойства в списке свойств CSS, а если оно не найдено, выполнить поиск элемента в пространстве имен XML по умолчанию.

Программное обеспечение MediaWiki автоматически генерирует статические неанимированные миниатюры изображений SVG. При просмотре фактического изображения .svg на каждой соответствующей странице описания его анимация будет отображаться в совместимом браузере.

Библиотеки

[ редактировать ]

Существует несколько библиотек JavaScript для работы с анимацией SVG. Преимущество использования таких библиотек состоит в том, что они часто решают проблемы несовместимости в браузерах посредством абстракции . Примеры библиотек: Raphaël и Velocity.js.

См. также

[ редактировать ]
  1. ^ «Масштабируемая векторная графика (SVG) 1.1. Спецификация» . Консорциум Всемирной паутины . Январь 2003 г. - апрель 2009 г. Архивировано из оригинала 27 августа 2006 г. Проверено 4 февраля 2010 г.
  2. ^ Феста, Пол (9 января 2003 г.). «W3C выпускает стандарт сценариев, предостережение» . CNet . Архивировано из оригинала 17 мая 2011 года . Проверено 24 февраля 2010 г.
  3. ^ Балтерман, DCA ; Ллойд Ратледж (ноябрь 2008 г.). SMIL 3.0: Интерактивные мультимедиа для Интернета, мобильных устройств и говорящих книг . X.media.publishing (2-е изд.). Нью-Йорк: Спрингер. п. 508. ИСБН  9783540785460 . Архивировано из оригинала 24 апреля 2022 г. Проверено 24 апреля 2022 г.
  4. ^ СМИЛ 3.0 . Архивировано из оригинала 24 апреля 2022 г. Проверено 24 апреля 2022 г.
  5. ^ «Поддержка SVG-анимации в Amaya» . Консорциум Всемирной паутины . 15 апреля 2003 г. Архивировано из оригинала 11 сентября 2009 г. Проверено 4 февраля 2010 г.
  6. ^ МакКэтиНевил, Чарльз (31 октября 2006 г.). «Анимация вашего SVG» . Сообщество разработчиков Opera . Программное обеспечение Опера . Архивировано из оригинала 7 марта 2010 года . Проверено 24 февраля 2010 г.
  7. ^ «SVG-анимация с помощью SMIL» . 29 марта 2011 года. Архивировано из оригинала 30 апреля 2011 года . Проверено 29 марта 2011 г.
  8. ^ «Когда я могу использовать анимацию SVG SMIL?» . Архивировано из оригинала 22 марта 2011 г. Проверено 29 марта 2011 г.
  9. ^ Дальстрем, Эрик (август 2008 г.). «Трюки JavaScript, SVG и SMIL» . Программное обеспечение Opera на веб-сайте SVG Open. Архивировано из оригинала 6 апреля 2009 года . Проверено 24 февраля 2010 г.
  10. ^ «Домашняя страница синхронизированного мультимедиа W3C» . www.w3.org . Архивировано из оригинала 17 апреля 2022 г. Проверено 20 марта 2022 г.
  11. ^ Хошка, Филипп, изд. (15 июня 1998 г.). «Спецификация языка синхронизированной интеграции мультимедиа (SMIL) 1.0» . W3C . Рабочая группа СИММ. Архивировано из оригинала 30 марта 2021 г. Проверено 9 апреля 2021 г.
  12. ^ Худаири, Салли; Джейкобс, Ян; Митчелл, Нед; Ллойд, Эндрю; Мацубара, Юмико (15 июня 1998 г.). «Пресс-релиз: W3C выпускает SMIL в качестве рекомендации W3C» . W3C . W3C. Архивировано из оригинала 08 февраля 2020 г. Проверено 9 апреля 2021 г.
  13. ^ Шмитц, Патрик; Ю, Джин; Сантанджели, Питер (18 сентября 1998 г.). «Интерактивные мультимедийные расширения по времени для HTML (HTML+TIME); расширение SMIL в веб-браузере» . Консорциум Всемирной паутины (w3.org) . Архивировано из оригинала 20 января 2022 г. Проверено 20 марта 2022 г.
  14. ^ «Язык синхронизированной интеграции мультимедиа (SMIL 2.0)» . www.w3.org . 7 августа 2001 г. Архивировано из оригинала 26 марта 2022 г. Проверено 20 марта 2022 г.
  15. ^ Шмитц, Патрик; Коэн, Аарон (4 сентября 2001 г.). «СМИЛ Анимация» . www.w3.org . Архивировано из оригинала 14 июня 2022 г. Проверено 20 марта 2022 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7e5750a90fd63c7adbf0e74229967f7c__1720969620
URL1:https://arc.ask3.ru/arc/aa/7e/7c/7e5750a90fd63c7adbf0e74229967f7c.html
Заголовок, (Title) документа по адресу, URL1:
SVG animation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)