|
|
To flash or not to flash?
|
Macromedia. Shockwave.
FLASH. Для кого-то это слово значит многое, для кого-то - пустой звук, сотрясение
воздуха. Для меня это долгое время было пустым развлечением, отдыхом для
глаз. Первым впечатлением был легкий шок, что ТАКОЕ можно делать в Сети
(после "скучного" HTML, или даже более активного DHTML, это казалось
чем-то необыкновенным) Шок вскоре сменился легким разочарованием. Дело в том, что новый Flash-сайт рассматривается, как нечто не совсем серьезное, даже совсем несерьезное - ссылка на него сразу же раздается всем друзьям и знакомым, которые со словами "Рулезь!" сразу же бегут его смотреть, вне зависимости от контента сайта, после чего наперебой делятся впечатлениями "как там эта кнопка хитро выезжала". Но постепенно пришло понимание, что такое Flash. Это - будущее. Анимационный GIF, который на сегодняшний день является основным средством создания хоть какой-нибудь интерактивности в Web'е, был придуман аж в 1989 году. А 10 лет для компьютерного мира - срок не просто большой - огромный. Пришла пора менять стандарты, тем более, что Shockwave - это новый СТАНДАРТ. Именно стандарт - другим словом это просто не назовешь: бесплатный flash-проигрыватель, к тому же обладающий весьма небольшими размерами (245 килобайт!) можно скачать и установить практически на любую операционную систему (Windows 95/98/NT, MacOS 8.x) и любой браузер (IE, NN), при этом на всех системах мультимедийный flash-клип будет отображаться ОДИНАКОВО, что нельзя сказать даже про простой HTML. Особенно греет мою измученную душу факт, что flash не является еще одной дубинкой в знаменитой "войне браузеров", чем в свое время были и JavaScript, и ActiveX, и DHTML. Flash очень компактен. Для своего качества Flash ЧЕРЕЗВЫЧАЙНО компактен. Достигается это в первую очередь за счет использования векторной графики. Так, например, чтобы нарисовать круг диаметром в 100 пикселей с помощью простого GIF'а понадобится килобайт 10 - точка за точкой, пиксель за пикселем тупо описывать квадрат 100х100. Да, в GIF'е есть какая-то компрессия... Допустим, на круг уйдет 3 килобайта (исключительно из-за большой любви к старику-GIF'у). Используя векторную графику, на это уйдет максимум ДВА байта - описать радиус - и все. В 1500 раз меньше. Цифра, конечно, кажется слишком уж большой - но на самом деле она гораздо БОЛЬШЕ. Допустим, вам нужна некая фигура, плавно "залитая" от ярко-красного к темно-синему. Используя GIF или JPEG мы получим неприятный trade-off между качеством и размером получаемой картинки. Чем выше качество, тем больше картинка. А как хотелось бы наоборот… В результате картинка может "потянуть" килобайт на 30… Используя flash, мы потратим снова считанные байты - 3 байта, чтобы задать начальный цвет заливки (true color, разумеется) и еще 3 - конечный. Причем можно сделать трех-, четырехцветную заливку… Но и это еще не все… Боюсь, захвалю я векторную графику… а что остается-то… Попробуйте в два раза увеличить любую растровую картинку. Попробовали? Что видим? Правильно - квадратики… :) Векторная графика при увеличении/уменьшении не теряет своего качества. Возьмем для примера тот же банальный круг. Увеличивая, flash-player просто нарисует круг не с радиусом в 100 пикселей, а, например, в 200. При этом качество останется неизменным, потому что круг просто будет перерисован заново. И тут самые умные, которые уже слышали про векторную графику, могут сказать, потирая руки: "Ага! Векторная графика-то тоже имеет недостатки. Фотографию векторами не опишешь, рисунок маслом - тоже. Синтетическая она, мертвая…" На что я могу сказать только одно: "А вот и нет!" При создании flash - роликов можно использовать "картинку" практически любых возможных форматов: *.EMF, *.WMF, *.EPS, *.AI, *.DXF, *.DIB, *.JPG, *.GIF, *.PNG… При этом она не тупо вставляется в нужное место клипа - с ней можно делать те же операции, которые доступны во всех современных графических пакетах: растягивать, сжимать, изменять размеры, поворачивать, отображать зеркально, менять прозрачность/яркость/баланс/все, что душе угодно. Кроме того, растровые изображения можно векторизовать с разной степенью детализации (вплоть до одного пикселя). Как с этим всем справляется flash-плейер - ума не приложу. :) Ну и конечно, звук. Конечно, это не CD-качество, но на это не обращаешь внимания, так как звуковое сопровождение не просто монотонно крутится, в то время, как графика делает все возможные выкрутасы. Вся прелесть, весь кайф в том, что звуковые эффекты можно "привязать" к конкретным сценам, либо к действиям человека - навел мышкой на кнопку, а она ка-а-ак… щелкнет. Не спорю, ничего удивительного в этом нет, такую ерунду можно сделать и на java. Но лично у меня Netscape, встретив где-нибудь на страничке потуги запустить java-applet, терял самообладание и начинал вести себя не самым лучим образом. Что касается оптимизации звука - Flash и тут не подкачал. (Боюсь, захвалю я его почем зря… обещаю в конце немного поругать). Одним из основных принципов является loop - то есть повторение одного и того же фрагмента. Причем сделано все до такой степени хитро… Например, на сайте студии AvestaDesign (пользуясь случаем, хочу сказать спасибо этой команде за оказанную помощь и консультацию в процессе написания этой статьи) звук занимает всего 80kb! Что, много? Как две средние jpg-картинки. Вспомните, когда и откуда вы в последний раз качали jpg-картинки. Ага, стыдно стало! :) В общем, я только после пятого просмотра, наконец, понял, в каком именно месте звук начинает идти по кругу. И то, я сидел, вслушивался, не нажимая ни на какие кнопочки, потому что каждое нажатие отзывалось новым звуком. Самое "вкусное", без чего вся эта затея была бы лишена всякого смысла - это анимация. Для каждого созданного объекта можно задать свою траекторию движения (произвольной формы). Во время движения объект может менять свою форму, окраску, прозрачность и делать, все, что душе угодно. Опять же, анимация не является чем-то раз и навсегда предопределенным (как, например, если бы это был avi или mpg файл), управлять ее можно по ходу действия; все движение может меняться из-за одного перемещения мыши. Можно делать все, что угодно - статичную кнопку, которая при наведении на нее курсора начинала бы ползать и менять окраску… Да много еще чего… Еще одно явное преимущество векторных объектов - они могут трансформироваться. Они же векторные :) Стоит только задать начальную, конечную форму и время, в течении кторого будет происходить трансформация - все остальное flash сделает за вас. Я уже и не говорю о том, что трансформировать объект можно в процессе перемещения и изменения цвета. При этом, что самое главное - размеры flash-ролика остаются смехотворно малы. Происходит это вот почему. Если бы мы создавали видео-файл (например, avi), то нам пришлось бы записывать каждый кадр как отдельную картинку, которая занимает кучу места, в то время, как во flash-ролике описываются не кадры, а объекты, их характеристики и КАК эти объекты должны двигаться, а flash-player на вашем компьютере сам стоит картинку. Зачем передавать изображение, когда его можно воссоздать?
|
COPYRiGHT (C) by DMiTRY SMiRNOV a.k.a. LSD 1999 |