div.main {margin-left: 20pt; margin-right: 20pt}SVG: Замена Flash-у © Copyright Eric Vitiello Jr. © перевод,
Александр
Качанов На протяжении последних 10 лет компания Macromedia является
доминирующей силой, продвигающей векторную графику и анимацию
в Web. Времена меняются и на горизонте появляются новые
методы. В векторной графике появился новичок - Scalable Vector
Graphics (SVG) (масштабируемая векторная графика), язык,
основанный на XML, разрабатываемый консорциумом W3C.
Большинство из вас, читатели, помнят, что в начале 90-х
годов Macromedia разработала продукт под названием
Shockwave. Shockwave позволял разработчикам мультимедийных
программ создавать анимации и даже программировать их, что
открывало невиданные до селе возможности в интерактивной
анимации.
Броузеры тех времен стали поддерживать Shockwave с помощью
plug-in-ов, и вскоре Macromedia осознала, что необходимо
создать облегченную версию Shockwave, которая будет
предназначена исключительно для броузеров. В 1996 году
Macromedia приобрела компанию FutureWave software, чей продукт
- FutureSplash - стал тем, что мы знаем как Flash 1.0.
Примерно в середине 90-ых на небосклоне стала восходить
звезда языка XML, благодаря его простому методу организации
данных. На языке XML было создано множество схем данных (data
schemas). Схемы данных описывали, например, как хранить и
выводить математическую информацию (MathML), как описывать
ресурсы общего характера (RDF), и даже как хранить и выводить
химическую информацию (CML). Этот метод организации данных был
положен в основу SVG.
Наступил 1999 год. Этот год - год рождения новой XML схемы
данных - SVG. SVG схема определяет, как в XML записывается
структура данных, описывающих векторную или растровую
картинку. В спецификации языка SVG также описано, как
создавать SVG-анимации, SVG-программы и документы. Все это
делает SVG сильным конкурентом Flash-у.
Подробнее об SVG
С первого взгляда ясно, что спецификация языка SVG
предлагает альтернативу многим функциям, имеющимся в наличии у
Flash, а также добавляет много других. Ядром SVG является
метод создания векторных графических элементов точно так же,
как Flash строит всю анимацию на основных геометрических
фигурах. Также как и Flash, SVG позволяет создавать анимацию
для каждого элемента, позволяет управлять элементами с помощью
скриптов через DOM, JavaScript, ECMAScript или с помощью
любого другого скриптового языка, который поддерживается
SVG-программой. В SVG разработчику доступны многие основные
элементы, включая окружности, прямоугольники, эллипсы,
многоугольники, кривые и текст. Так же как и в HTML,
отображением элементов можно управлять с помощью стилей (CSS2),
либо напрямую с помощью атрибутов.
В настоящее время существует множество SVG-броузеров и
редакторов, позволяющих создавать и просматривать
SVG-документы. Компания Adobe создала plug-in, который позволяет
просматривать SVG-файлы в броузере, а также включил поддержку
работы с SVG-Файлами в Illustrator 10. Другие компании, такие
как JASC,
Corel, Sun и IBM также включили в свои продукты определенную
поддержку SVG. Так как схема SVG достаточно проста, вы можете
без труда создать SVG-файл даже в простом текстовом
редакторе.
Простой SVG-файл, рисующий черный круг, будет выглядеть
следующим образом:
1: <?xml version="1.0" encoding="UTF-8"
standalone="no"?> 2: <!DOCTYPE svg PUBLIC
"-//W3C//DTD SVG 1.0//EN" 3:
"http://www.w3.org/TR/SVG/DTD/svg10.dtd"> 4: <svg
xmlns="http://www.w3.org/2000/svg"> 5:
<title>A Circle</title> 6: <circle
cx="100" cy="100" r="50" stroke="black" stroke-width="2px"
fill="none"/> 7: </svg>
Обратите внимание: первая строка - стандартный заголовок
XML-документа, во второй и третьей строке расположен заголовок
SVG DOCTYPE. В 4-ой строке располагается корневой элемент
SVG-документа с указанием пространства имен (name space) SVG.
Внутри этого элемента располагается элемент <title> и
элемент для рисования круга <circle>. В элементе
<circle> мы задаем координаты центра круга (атрибуты cx
и cy), радиус (атрибут r). Остальные атрибуты определяют,
какой инструмент используется для рисования края круга, какой
у края будет цвет, и каким цветом будет залит сам круг (этот
атрибут имеет значение "none" - т.е. у круга заливки не будет)
.
В SVG документ можно вставлять и другие элементы. Например,
можно вставить PNG, GIF или JPG картинку с помощью элемента
<image>. С помощью SVG-схемы можно определить свои
собственные шрифты, и даже написать текст вдоль кривой. С
помощью скритов можно менять все атрибуты всех этих элементов,
а также создавать анимации, о чем речь пойдет ниже.
Работаем с SVG
Создать SVG файл крайне просто, и в отличие от Flash, для
этого вам не понадобится пользоваться каким-либо графическим
редактором или приобретать какое-либо ПО - plug-in от Adobe
распространяется бесплатно. Эта простота дает SVG еще одно
преимущество перед Flash: благодаря текстовой природе XML,
SVG-файлы могут индексироваться поисковыми серверами. Таким
образом вам не нужно создавать дополнительные метафайлы для
поисковых серверов, как это делается в случае с Flash.
SVG-документ можно с легкостью вставить в HTML-документ.
Так как SVG-формат базируется на XML, разработчики получают
возможность строить SVG-изображения основываясь на данных,
которые также могут храниться в XML-формате. Преобразуя
XML-данные в SVG с помощью простого XSL, можно легко получить
графическое представление любых данных. Более того, можно
например в SVG-графике отобразить, как располагаются столы в
офисе, на основе данных, записанных в XML формате.
XML данные:
1: <?xml version="1.0"?> 2:
<cubicles> 3: <cubicle north="10" east="15"
width="10" length="10"/> 4: <cubicle north="0"
east="0" width="10" length="10"/> 5:
</cubicles>
XSL преобразование XML в SVG:
1: <?xml version='1.0'?> 2:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 3:
<xsl:template match="/"> 4:
<svg xmlns="http://www.w3.org/2000/svg"> 5:
<title>Our Cubicles</title> 6:
<xsl:apply-templates
select="cubicle"/> 7: </svg> 8:
</xsl:template> 9: <xsl:template
match="cubicle"> 10: <rect x="{north}"
y="{east}" width="{width}" height="{length}"/> 11:
</xsl:template> 12:
</xsl:stylesheet>
Конечный SVG документ:
1: <?xml version="1.0" standalone="no"?> 3:
<svg xmlns="http://www.w3.org/2000/svg"> 4:
<title>A Circle</title> 5: <rect
x="10" y="15" width="10" height="10"/> 5:
<rect x="0" y="0" width="10" height="10"/> 8:
</svg>
В результате данной трансформации создается графическое
изображение. Показывающее, как располагаются в офисе столы. По
этому представлению гораздо проще понять, как столы
расположены относительно друг друга. Возможности представления
данных графически безграничны, и с помощью SVG осуществляются
очень просто.
Анимация в SVG
Анимация, как было уже сказано выше, осуществляется в SVG с
помощью языка SMIL (Synchronized Multimedia Integration
Language), который также является технологией, разработанной
консорциумом W3C. В целях демонстрации возможностей SVG в
сфере анимации, мы можем взять наш предыдущий пример с кругом
и анимировать его, добавив элемент <animate>:
1: <?xml version="1.0" standalone="no"?> 2:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 3:
"http://www.w3.org/TR/SVG/DTD/svg10.dtd"> 4: <svg
xmlns="http://www.w3.org/2000/svg"> 5:
<title>A Circle</title> 6: <circle
cx="100" cy="100" r="50" stroke="black" stroke-width="2px"
fill="none"> 7: <animate
attributeType="XML" attributeName="r" from="0" to="50"
dur="2s"/> 8: </circle> 9:
</svg>
Анимация может запускаться по определенному событию,
например по событию "onmouseover", "onclick", либо с помощью
скрипта, что позволяет создавать интерактивную графику. У
каждого элемента ко всему прочему есть еще и свои собственные
события, к которым также можно привязывать скрипты. Короче,
существует множество способов сделать SVG-документ
интерактивным, и делается это весьма просто. Создание сложных
анимаций и сложных наборов графических изображений также не
вызывает никаких трудностей в SVG. Любой объект в
SVG-документе является XML-элементом, и к любому этому
элементу можно получить доступ через DOM. Благодаря этому вы
можете определить, как и куда каждый из элементов должен
двигаться, как и на какие события реагировать.
С помощью скриптов можно поменять любое значение любого
элемента в документе, а также поменять взаимное расположение
элементов относительно друг друга, и всю структуру документа.
Изменение структуры документа может играть важную роль, так
как от этого зависит то, как документ будет выводиться на
экран. Например, если элемент <line> (линия) расположен
в документе после элемента <circle> (круг), линия будет
выведена поверх круга.
SVG в процессе
Разработка спецификации SVG по-прежнему продолжается. В
настоящее время спецификация SVG 1.1
приобрела статус Last Call Working Draft (Окончательный
рабочий черновик проекта). Также в разработке находятся
спецификации SVG Basic и SVG Tiny, предназначенные для
мобильных устройств, что позволит в будущем мобильным
телефонам и наладонным компьютерам выводить на экран
SVG-файлы. Разработка этих спецификаций приведет в конечном
счете к широкому признанию и использованию SVG точно так же,
как непрекращающаяся разработка HTML привела к расцвету этой
технологии.
Очень скоро SVG будет использоваться повсеместно, а так как
формат SVG не является собственностью какой-либо компании, его
популярность будет расти стремительно. Flash будет еще
некоторое время доминировать в Web из-за большого количества
установленных plug-in-ов. Однако, и SVG не отстает. Благодаря
распространению SVG plug-in-ов через броузеры, количество
пользователей SVG вырастет очень быстро так же, как это было с
Flash. Будущие версии различных броузеров будут уже заранее
включать в себя SVG-поддержку, а некоторые имеют ее уже
сейчас.
Возможности использования SVG - широки, а благодаря
трансформациям XML в SVG, эти возможности становятся
практически безграничными. Примером такой гибкости может
служить например преобразование накопленных статистических
данных по населению в цветную карту в зависимости от выбранных
районов и временного интервала. Изменение выбранного интервала
меняет цвет графика, так как меняется количество населения
выбранного района. Изменение, внесенные в XML-данные,
немедленно отображаются в SVG-графике.
SVG можно использовать так же как и Flash - для создания
системы меню, навигации по сайту и даже для создания всего
сайта целиком. Компания Adobe представила прекрасный ресурс, где продемонстрированы
некоторые возможности SVG: преобразование химических данных в
3-хмерные изображения молекул, рисование графиков и схем,
генерация на лету театральных билетов с интерактивного
системой их заказа, и также приложение, предназначенное для
создания SVG-изображений.
Установка Adobe SVG plug-in-а очень простая. Зайдите на Adobe's SVG download и загрузите plug-in,
соответствующий вашей операционной системе. Перед просмотром
первого SVG-документа на экране появится окно с лицензионным
соглашением. Оно достаточно простое.
Попробуйте поработать с SVG сами. Может оказаться, что вам
понравится то, как редактируя вручную XML-данные, вы можете
преобразовывать их в графическое изображение, которым можно
полностью управлять.
Ресурсы
Веб-сайты некоторых из разработчиков SVG:
http://www.pinkjuice.com/ http://www.kevlindev.com/ http://www.svgnotebook.com/ SVG Wiki
Прочие веб-сайты, посвященные SVG:
Adobe SVG
Zone Adobe SVG Viewer Adobe SVG Examples W3C SVG
Specification
|