Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Статьи - разминка для умаSVG: Замена Flash-у

SVG: Замена Flash-у

На протяжении последних 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



© Copyright Eric Vitiello Jr.
© перевод, Александр Качанов

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95