
И на горячее...
FLASH – ПРОШЛОЕ, НАСТОЯЩЕЕ И БУДУЩЕЕ
ТАК ПОЛУЧИЛОСЬ, ЧТО ИСТОРИЯ ТЕХНОЛОГИИ FLASH НАЧАЛАСЬ В ОДНОМ ИЗ «ГАРАЖЕЙ».
FUTUREWAVE SOFTWARE – КОМАНДА ПРОГРАММИСТОВ, СОСТОЯЩАЯ ВСЕГО ИЗ 6 ЧЕЛОВЕК, НАПИСАЛА ВЕКТОРНЫЙ РЕДАКТОР ПОД НАЗВАНИЕМ
SMART SKETCH
В 1995 году появился прадедушка Flash. Сразу после выхода программы в свет разработчиками было принято решение добавить в нее возможности для анимации графики, и уже в мае 1996 года на рынке появился
FutureSplash Animator – пакет, способный публиковать динамический графический контент в вебе.
В тот момент на IТ-рынке уже существовало несколько технологий, позволяющих публиковать в WWW динамическую графику с интерактивными элементами, например
Java компании Sun, Shockwave компании Macromedia и так далее. Но из-за своей сложности и недоступности среднему обывателю эти технологии не получили широкого распространения, оставаясь уделом эстетствующих программистов.
Появившись на свет, FutureSplash Animator сразу же была подхвачена рядом крупных веб-проектов, остро нуждающихся в эффектной динамической графике, такими как
MSN компании Microsoft, The Simpsons компании Fox и
Disney Daily Blast.
Компания Macromedia сразу же обратила пристальное внимание на новую технологию, поскольку она являлась прямым конкурентом
Shockwave. Оценив все перспективы молодой разработки, уже в декабре 1996
Macromedia покупает FutureWave вместе с «гаражом». Надо отметить, что такая же ситуация повторилась и с самой
Macromedia, которую через 10 лет (в декабре 2005) поглотила компания
Adobe.
Само десятилетнее развитие пакета не столь интересно. Можно сказать больше: за 10 лет сам редактор –
Macromedia Flash – претерпел минимум изменений, но технология проделала путь от идеи до стандарта, занимающего собственную нишу и значительный процент в
WWW.
Flash 9 – не за горами.
Команда разработчиков новой среды – Flash 9 (кодовое имя – Blaze), неохотно распространяется о будущих нововведениях. Но, тем не менее, уже сейчас на сайте
Adobe доступна для бесплатного скачивания альфа-версия компилятора. Поэтому ничто не мешает нам начинать разбираться с ним уже сейчас.
Ядро ActionScript 3
ActionScript 3 – следующая эволюционная ступень развития
ActionScript. Этот язык близок к Java и C#, а его возможности ограничены рамками, накладываемыми на интерпретируемые на клиенте приложения.
При беглом обзоре может показаться, что разработчики просто навели порядок в пространстве имен и добавили несколько новых библиотек. Но это не совсем так! Изменения произошли в первую очередь на более глубоком, идеологическом уровне!
Взяв курс на RIA(Rich Internet Applications) разработчики оказались между двух огней: с одной стороны с бардаком в
AS (ActionScript) нужно было что-то делать, с другой – нельзя было особенно усложнять программу, ведь именно благодаря своей простоте
Flash завоевал сердца своей аудитории.
ActionScript 3 обладает доступностью и гибкостью своего предшественника,
ActionScript 2, но теперь это не просто кривая пародия на стандарт ECMA-262, а мощный объектно-ориентированный язык, нацеленный на разработку сложных и ресурсоемких приложений.
ActionScript 3 выполняется на новой виртуальной машине
ActionScript Virtual Machine 2, встроенной в Flash Player
9, производительность которой в среднем в 10 раз выше, чем производительность AVM1 + AS2.
Обработка ошибок «на лету» (runtime exceptions)
Существует мнение, что при работе с ActionScript 2 на поиск и исправление неявных ошибок уходит до 80% всего затраченного на работу времени. Дело в том, что компиляторы
ActionScript 2 проверяют синтаксис кода только при компиляции swf-файла. Все неявные ошибки (например, отсутствие инициализации объекта класса), возникающие во время работы, если не приводят к зависанию, проходят тихо и незаметно.
Теперь в ActionScript 3 добавлены механизмы для обработки исключений, что позволит обрабатывать возможные ошибки «на лету». Предоставляемая отладочная информация содержит информацию о стеке вызовов, исходном коде и номере строки с ошибкой.
Строгие типы данных (runtime types)
Строгая (обязательная) типизация данных – одна из основных причин, по которой разработчикам удалось значительно ускорить выполнение
ActionScript 3. Пожертвовав неопределенностью типа переменной, разработчики выиграли время и память. А проверка соответствия типа «на лету» добавила еще один уровень надежности работы кода.
Упрощенная схема создания обработчиков событий (method
closures)
В ActionScript 3 реализована упрощенная модель объявления обработчика событий. Так в
ActionScript 2 обработчик начисто «забывал» свой объект. Для решения этой проблемы приходилось использовать разнообразные громоздкие конструкции. Теперь строки
myButton.addEventListener("click", someMethod);
достаточно для того, чтобы объявить реакцию объекта на событие. Функция-обработчик автоматически запомнит ссылку на экземпляр своего объекта.
Поддержка Е4X стандарта для работы с XML
(ECMAScript for XML (E4X)).
ActionScript 3 содержит полную реализацию стандарта
E4X. Этот стандарт был разработан специально для того, чтобы упростить работу с
XML-структурами. XML в этом стандарте представлен, как native
data:
//Создаем XML-структуру
var myXML:XML =
<order>
<item id='1'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<item id='2'>
<menuName>fries</menuName>
<price>1.45</price>
</item>
</order>
// Обращаемся к элементам
trace(myXML.item[0].menuName); // Output: burger
trace(myXML.item.(@id==2).menuName); // Output: fries
trace(myXML.item.(menuName=="burger").price); // Output: 3.95
Эта нотация значительно сокращает объем управляющего кода, а встроенная реализация стандарта существенно ускоряет работу
парсера XML.
Поддержка регулярных выражений (regular
expressions)
Поддержка регулярных выражений (по спецификации ECMA-262) на уровне ядра позволит быстро осуществлять сложный поиск в больших массивах текста.
Пространства имен (namespaces)
В ActionScript 3 реализован инновационный механизм определения и управления пространством имен. Теперь можно создавать произвольные пространства имен, например традиционные спецификаторы доступа, используемые для управления видимостью объявлений public, private, protected, – что дает возможность управлять полями видимости и избегать коллизий при работе с
E4X.
Новые типы данных (new primitive types)
В ядре ActionScript 3 добавилось несколько базовых типов данных. В
ActionScript 2 был только 1 численный тип Number
(double float). Теперь добавлен новый целочисленный тип
int (32-bit), использование которого в целочисленных операциях (например, в счетчиках циклов) позволило значительно ускорить язык.
Другой новый тип - uint – беззнаковый
32-битный int.
Flash Player API – это набор классов и методов, реализующих возможности
Flash Player посредством языка ActionScript 3. К сожалению, в этой статье недостаточно места для описания всего
API, поэтому приведем лишь наиболее значимые и интересные моменты.
Новая модель событий (DOM3 event model)
В Flash Player API реализована новая эффективная модель обработки событий, включающая event bubbling. Заимствованная у спецификации
W3C DOM3, данная модель позволяет наиболее эффективным способом управлять происходящими в интерактивной среде событиями и обрабатывать их.
Новые классы для управления графикой Display List
API
Класс Sprite по аналогии с классом MovieClip реализует базовый набор методов для работы с графическим элементом
(bitmap).
// Создаем кнопку на спрайте
import flash.display.Sprite;
import flash.events.MouseEvent;
var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xCC0000);
circle1.graphics.drawCircle(40, 40, 40);
circle1.buttonMode = true;
circle1.addEventListener(MouseEvent.CLICK, clicked);
// Реакция на клик
function clicked(event:MouseEvent):void {
trace ("Click!");
}
addChild(circle1);
- Shape
Класс Shape реализует набор графических примитивов для создания динамической векторной графики.
// Рисуем прямоугольник со скругленными углами
var child:Shape = new Shape();
child.graphics.beginFill(0xCC0000);
child.graphics.lineStyle(1, 0xFFFFFF);
child.graphics.drawRoundRect(0, 0, 100, 200, 5);
child.graphics.endFill();
addChild(child);
- Filters
Набор классов группы filters - мощнейший набор динамических фильтров.
// Эффект размытия в одну строку
obj.filters.push(new BlurFilter(5, 5, 1));
Звук
В Flash Player API существенно расширены возможности работы со звуком. Например, теперь, используя класс
SoundMixer, можно получить доступ к raw-данным звуковой дорожки.
// Частотный анализатор (эквалайзер)
// Автор: http://theflashblog.com/?p=181#
var s:Sound = new Sound();
var sc:SoundChannel;
var ba:ByteArray = new ByteArray();
var array:Array;
s.load(new URLRequest("mix.mp3"));
sc = s.play(0,1000);
this.addEventListener(Event.ENTER_FRAME, spectrum);
var a:Number = 0;
function spectrum(event:Event)
{
a = 0;
graphics.clear();
SoundMixer.computeSpectrum(ba,true,0);
for(var i=0; i < 256; i=i+8)
{
a = ba.readFloat();
var num:Number = a*360;
graphics.lineStyle(num/15,0x0066FF|(num << 8));
graphics.drawCircle(stage.stageWidth/2,
stage.stageHeight/2,i);
}
}
На десерт
Кроме перечисленного выше, можно отметить такие аспекты:
- НОВЫЕ ПОДХОДЫ И ТЕХНИКИ В РАЗРАБОТКЕ БЛАГОДАРЯ ПОЯВИВШИМСЯ ВОЗМОЖНОСТЯМ. НАПРИМЕР, ПОБАЙТОВАЯ ЗАГРУЗКА И ДОКАЧКА ФАЙЛОВ (БИНАРНЫЕ СОКЕТЫ).
- ПРОГРАММНОЕ УПРАВЛЕНИЕ ЗВУКОМ.
- ВОЗМОЖНОСТЬ СОЗДАТЬ АДАПТЕР К БД С ПОМОЩЬЮ БИНАРНЫХ СОКЕТОВ И ПОДКЛЮЧАТЬСЯ К БАЗЕ НАПРЯМУЮ.
- РАБОТАЮЩИЕ КНОПКИ «НАЗАД/ВПЕРЕД» В БРАУЗЕРЕ И СПЕЦИАЛЬНЫЕ КЛАССЫ ДЛЯ РАБОТЫ С ИСТОРИЕЙ.
- ВЛОЖЕННЫЕ И АНОНИМНЫЕ КЛАССЫ.
- СИЛЬНО ИЗМЕНЕННЫЙ ПОДХОД К РАБОТЕ С ВИЗУАЛЬНЫМИ ОБЪЕКТАМИ. ТЕПЕРЬ МУВИКЛИПЫ НЕ НАДО АТТАЧИТЬ ИЛИ ДУБЛИРОВАТЬ, ЗАТО МОЖНО СКОПИРОВАТЬ ИЗ ОДНОГО ВИЗУАЛЬНОГО ОБЪЕКТА В ДРУГОЙ.
- СОБЫТИЕ УХОДА МЫШИ ЗА ПРЕДЕЛЫ РОЛИКА.
- ВОЗМОЖНОСТЬ ВНЕДРЯТЬ ЛЮБЫЕ ОБЪЕКТЫ В РОЛИКИ.
- ВОЗМОЖНОСТЬ ПУБЛИКАЦИИ ИСХОДНИКА В ТЕЛЕ РОЛИКА.
Все это и многое другое делает работу с ActionScript намного более радостной и приятной.
Flex 2.0
Adobe Flex – технология для легкого и быстрого создания
RIA. Flex – это родственная Flash-технология, основанная на описании интерфейса приложения (а также обработчиков событий, связи источников данных с объектами и т.п.) с помощью диалекта
XML – MXML. Flex-приложение может компилироваться на сервере, а может – из
Flex IDE. Как и во Flash, результатом компиляции является swf-файл, исполняемый
Flash Player 9.
Flex IDE основана на уже ставшей легендарной универсальной открытой среде разработки
Eclipse. Во второй версии Flex IDE используются не все возможности данной среды, но того, что уже есть – достаточно, чтобы сразу же «подсесть» на нее. Ведь именно в
Eclipse многим впервые становится понятно, что от процесса программирования можно получать огромное удовольствие.
В основе линии продуктов Flex лежит Flex Framework – набор базовых утилит и библиотек для создания
RIA. Flex Framework состоит из библиотеки классов
Flex, Flex-компилятора, отладчика и двух языков программирования:
MXML и ActionScript 3. Adobe поставляет Flex
Builder, интегрированную среду разработки flex-приложений. Хотя
Flex Builder создан специально для работы с Flex
Framework, совсем не обязательно использовать именно эту связку. Ты можешь сам выбирать, в какой
IDE разрабатывать приложения для Flex
Framework.
MXML – основанный на XML язык описания интерфейса пользователя, используемый во flex-приложениях.
MXML также может декларативно определять невизуальные аспекты приложения, такие как доступ к данным на стороне сервера и связывание данных с компонентами пользовательского интерфейса.
Контроль исполнения и манипуляции объектами - это функциональность, недоступная в
MXML. Она обеспечивается скриптами, написанными на
ActionScript 3.
Сухой остаток
В результате можно констатировать следующее: технология анимации векторных картинок в вебе за десять лет превратилась в мощный инструмент разработки. Сохранив первоначальную гибкость и простоту, Flash-технологии получили широчайшее распространение и практически обрели статус стандарта для мультимедийных веб-приложений.
За последние пару лет технологии совершили головокружительный скачок. Опьяненные счастьем flash-программисты празднуют начало новой эры благоденствия.
СЛОВАРИК
- RIA – RICH INTERNET APPLICATION.
- IDE – INTEGRATED DEVELOPMENT ENVIRONMENT.
- SWF – ФОРМАТ ФАЙЛА, ИСПОЛНЯЕМОГО ACTIONSCRIPT VIRTUAL
MACHINE.
- MXML – ОСНОВАННЫЙ НА XML ЯЗЫК ОПИСАНИЯ СТРУКТУРЫ FLEX-ПРИЛОЖЕНИЯ.
- AVM – ACTIONSCRIPT VIRTUAL MACHINE – ВИРТУАЛЬНАЯ МАШИНА ДЛЯ ИНТЕРПРЕТАЦИИ
ACTIONSCRIPT.
- AS, AS2, AS3 – ACTIONSCRIPT - ЯЗЫК НАПИСАНИЯ СЦЕНАРИЕВ ДЛЯ FLASH-СРЕД.
- FP – FLASH PLAYER.
- API – APPLICATION PROGRAMMING INTERFACE.
- E4X – стандарт, описывающий работу с xml-структурами.
- ECMA – стандарт, описывающий языковые конструкции.
- DOM – Document Object Model.
WEFAIL
(дословно название студии переводится как «МЫ НЕУДАЧНИКИ»)
Dr. Jordan Stone & Professor Martin Hughes: Что такое «свое лицо», почему оно нам необходимо и как его получить?
В беседе участвуют двое: доктор Джордан Стоун из города Остин (Техас) и профессор Мартин Хьюз из Лондона.
Слово вам, Мартин
Martin: Полагаю, «свое лицо» есть у любого сайта.
Jordan: Нет-нет, извините, что перебиваю, но большинство сайтов – безжизненное и скучное дерьмо.
Martin: Можно я закончу?
Jordan: Нет, то есть, да. Пожалуйста, продолжайте.
Martin: Как я уже говорил, «свое лицо» есть у любого сайта, дело лишь в том, нравится ли это лицо вам, пользователю.
Jordan: Да, это верно. Простите, что перебил.
Martin: Вероятно, сайт WEFAIL демонстрирует свое лицо несколько более активно, и потому пользователи либо любят нашу работу, либо ненавидят. Но лучше ненависть, чем равнодушие.
Jordan: Я бы сравнил отношение WEFAIL к дизайну с подходом Стивена Морриссея из неизменно популярной группы The Smiths к музыке. Видите ли, до The Smiths музыке 50-х никто так и не смог бросить настоящий вызов. Большинство людей по-прежнему слушали Franky Avalon, Chuck Berry и The Drifters. Но вот пришли The Smiths, подвергли сомнению законы рок-н-ролла и предложили новое определение музыки, сформировав современный поп-звук.
Martin: А мы то же самое сделали с Flash?
Jordan: Да-да, так и есть, мы покончили с 50-ми в Cети.
Martin: Долгое время я любил просматривать сайты web-студий и читать информацию об их истории. Не знаю, как это случилось, но в какой-то момент web-дизайнеры решили, что жаргон продавцов подержанных машин уместен на самом видном месте любого сайта, и поэтому появились лозунги вроде «Безграничное воображение по доступной цене в вашей гостиной» или «web-дизайн завтрашнего дня уже СЕГОДНЯ», которые размещались на довольно посредственных сайтах. Мне казалось, что это очень здорово.
Однажды я работал на студии, руководитель которой предпочитал размещать на первой странице загадочные hi-tec лозунги вроде «НА ЭТОМ САЙТЕ РАДИ ВАШЕГО УДОВОЛЬСТВИЯ ИСПОЛЬЗОВАН WAP», «САЙТ С WAP ЗАВТРАШНЕГО ДНЯ УЖЕ СЕГОДНЯ» - полная ерунда! По-моему, однажды в 3D-интре он даже цитировал Шекспира, что очень печально.
Что касается WEFAIL, мы решили с самого начала умалить свою значимость. МЫ НЕУДАЧНИКИ... Что бы мы ни продавали, что бы ни делали, мы потерпим неудачу, но нас это не беспокоит. «ВЫ ПОЛУЧИТЕ WEB-ДИЗАЙН ЗАВТРАШНЕГО ДНЯ, МОЖЕТ БЫТЬ, ЗАВТРА, ЕСЛИ У НАС ПОЛУЧИТЬСЯ, ПОТОМУ ЧТО МЫ НЕ ОЧЕНЬ ХОРОШО УМЕЕМ ЭТО ДЕЛАТЬ».
Jordan: Я говорил о том же, только выразил эту мысль более удачно.
Martin: Вы уверены? Мне кажется, вы давно потеряли читателя в своей домашней пустыне метафор.
Jordan: Никогда не недооценивайте читателя, Мартин. Все равно кто-то да теряется время от времени. Мы скорее теряем самих себя, постоянно думая о бесценных мыслях в своем сознании, которые в результате преподносят нам новый веб-дизайн, завораживающий всю детскую аудиторию. Потеряйте лучше свои комплексы, Мартин, и найдите, наконец, творчество!
Martin: Ладно, я попробую.
Jordan: Вот это другой разговор! Очистите свое творческое сознание!
Martin: Итак, мы собрались сделать то, за что нам будет не так стыдно. Но, задача усложнилась! Появился заказчик, которому почему-то вдруг может не понравится внезапно открывающееся pop-up окно на любимую порнушку или появившийся откуда ни возьмись рэпак, воспроизводимый робо-подобным голосом на стартовой странице... Да... придется идти на уступки и остановиться на чем-то промежуточном (Хотя... Пока заказчики спят, вернем рэпак на стартовую страницу! Мы ненавидим уступки).
Мы продолжаем работать над сайтом. Нет выхода, но мы создаем анимированного персонажа. И этот самый персонаж в один прекрасный момент должен кидать импровизированное животное прямо вам в лицо. Заказчик нам сразу перезвонил, как увидел первый эскиз и сказал: «Животное выглядит так испуганно в момент, когда его собираются бросить. Посмотрите на его бедные глаза. Ха-ха, так не бывает!!!».
По ходу, нам придется убрать это «животное лицо сайта». Заказчику лучше знать.
Jordan: Причиной того, что мы продолжаем делать нашу работу, было недавнее пробуждение среди сна: «О! Кто-то пытается меня критиковать! Бог мой!». Мы не можем обмануть себя. Мы делаем это интуитивно. Если нам это нравится и клиентам это нравится, в конце концов, кому какое дело до других. Нужно ли нам создавать фокус-группу или искать целевой рынок? Можем ли мы проанализировать каждый бит? Да все это могут. Ты записал?
Martin: ВЕРЬ В СВОИ СИЛЫ!
Jordan: Да! Да! Так вот к чему все сводится: если бы мы учились в Высшей школе копирайтеров... Ну, прежде всего, если мне и Мартину пришлось бы бросить колледж... но не об этом. Так, как я уже говорил, ЕСЛИ БЫ мы учились в высшей школе копирайтеров, я уверен, что профессора копирайта назвали бы «свое лицо», о котором мы говорили, «собственным голосом»... Поэтому не бойтесь использовать свой «собственный голос» по полной. Даже если вы бросите колледж и останетесь с восьмью классами образования.
Martin: Я забил еще и на школу, чтобы смотреть телик и отдыхать.
Jordan: И теперь ты делаешь высокопосещаемые сайты, которые висят в интернете. Видите! Бояться здесь нечего!
Martin: Ну что! Битва за будущее началась!
Jordan: Э-э-э нет, спасибо.
ПОСТУЛАТ ДЛЯ ВЕБ-ДИЗАЙНЕРА ОТ WEFAIL:
- ВСЕГДА ГОВОРИ ТОЛЬКО НЕПРАВДУ.
- ВСЕГДА БЕРИ ДЕНЬГИ ЗА САЙТ ДО ТОГО, КАК ЕГО ОТДАТЬ.
- ПЕРВОЕ, ЧТО ВАМ СЛЕДУЕТ СКАЗАТЬ ЗАКАЗЧИКУ: «ЕСЛИ ТЫ МЕНЯ НАЕ@@ШЬ, Я ВОТКНУ ТЕБЕ МОЙ НОЖ ПРЯМО В ГЛОТКУ И ТЕМ САМЫМ ПРИЧИНЮ ТЕБЕ НЕВЫНОСИМУЮ БОЛЬ».
- ДЕРЖИТЕ ЗАКАЗЧИКА В ЕЖОВЫХ РУКАВИЦАХ.
- НАЧИНАЙТЕ ВСЕ ВЗАИМООТНОШЕНИЯ С ЗАКАЗЧИКОМ С НЕПРЕРЫВНОГО ПОТОКА ЛЖИ.
- ЗАКАЗЧИК ВСЕГДА НЕПРАВ.
- УСВОЙТЕ СРАЗУ ЖЕ, ЧТО ВСЕ, ЧТО ВЫ ДЕЛАЕТЕ, – РАДИ ДЕНЕГ.
- ЗАКАЗЧИКАМ НЕ СВОЙСТВЕННА НЕРВНАЯ УРАВНОВЕШЕННОСТЬ.
- ЗАКАЗЧИК – ЭТО ЗЛО, И ОН ПОСТОЯННО ПЫТАЕТСЯ РАЗОБЛАЧИТЬ ВАШИ НЕВИННЫЕ ПЛАНЫ.
- НИКОГДА НЕ СЛУШАЙТЕ, ЧТО ГОВОРИТ ЗАКАЗЧИК, ВСЕ РАВНО ОН НЕ ПРАВ.
Содержание
|