Archive for the ‘ActionScript 3.0’ Category

Наш ответ Чемберлену или проблемы сравнения конкурирующих платформ

Tuesday, December 9th, 2008

Сегодня в сети появилась статья “Еще одно сравнение Adobe Flash и Silverlight 2” , прочитав ее я понял главную ошибку авторов этих статей — каждый автор является специалистом только в одной области, или Flash|Flex или Silverlight. Поэтому страдают “конкурирующие платформы”. Как выход я вижу написание совместной статьи (но это дело долгих споров). Автор данной статья не избежал ошибок и показал всое поверхностное знание Flex/Flash технологии.

Я попытаюсь исправить его недочеты, для полноты картины )

В начале оговоримся что я не буду в ходе разговора использовать софт который находится в стадии альфа, бетта и пререлиз ).

Среда разработки и прочий инструментарий.

Для начала разберемся с инструментраем и возможностями:

FlashPlayer — это плагин который позволяет проигрывать swf файлы (байт код, который можно создавать где и как угодно, например умельцы рантайм генерят его и сразу же запускают в флешплеере).
Flash IDE/Flex Builder — это среда позволяющая создавать swf файлы.
Flex framework — это фреймворк позволяющий быстро и эффективно создавать RIA приложения. Flex Builder “заточен” для работы с Flex framework.

Использование Flash IDE как средство разработки крупных приложений, довольно опрометчивый шаг. Ее, в контекте разработы RIA лучше использовать как дополнительное средство.

Вообще не стоит говорить что вся разработка сводится к связку Flash IDE(графика)-Flex(код) — это просто частный случай варианта разработки.

а использовать только Flex сложно, поскольку ничего похожего на дизайн-вью в нем просто нет.

Ляп! пожалуйста, жмем на кнопку Design в MXML редакторе и видим дизайн вью. (единственно что он не работает в билдере под линукс). Может канечно этот дизайн вью и не такой навороченый как бленд, но он есть )

Язык программирования

ActionScript 3 являеться вариантом реализации ECMAScript-262, 4 версии http://en.wikipedia.org/wiki/ECMAScript , Я не буду искать подробности отличая от этого стандарта, они есть и это можно найти воспользовавшись гуглом ).

Язык не имеет …

Да язык часто ругают за его непродвинутость.

Язык не имеет встроенной событийной модели

но это вот ляп, событийная модель является главной фичей флешплеера 9 и выше.
— кстате автор нигде не учитывал возможности флешплеера 10 ) который уже вышел в релиз.

Отдельной строкой хочется сказать об отладчике.
Если во Flex Builder он еще куда ни шло, то во Flash им просто невозможно пользоваться – основным методом отладки до сих пор является trace.

При разработке крупных проектов боже вас упаси использовать и дебажить во Flash IDE! вы же не будете дебажить в Blend’e 😉

Поддержка ОС и браузеров:
А что есть нормальная(официальная) поддержка Linux? Как мне поница Moonlight дорос пока только до версии 1. вобщем то до релиза далеко.
К том же плеер более стабилен в различных системах. (мне порой приходится перегружать барузер или запускать ИЕ чтобы посмотреть приложение на Silverlight, Маководы жалуются что не всегда получается поставить плагин)

Возможность упаковки в исполняемый файл:

Стоит учитывать что есть продукты сторонних производителей которые позволяют делать испольняемые файлвы из флеш/флекс приложений, причем под разные платформы (например Zinс)

Изображения:
JPEG, GIF, PNG — флеш с этим работает на лету. Вектор, у флеша это в крови. Кроме того, что можно импортировать ai,пдф файлы автор забыли о поддержке SVG графики. Причем уже есть библиотреки позволяющие использовать ее рантайм. (Например degrafa http://www.degrafa.com/2007/07/27/how-complex-can-you-get-with-degrafa-very/).
Также можно реализовать поддержку практичеки любого формата графики (ByteArray+Bitmap+Drawing API).
Про скорость отрисовки я бы вообще ничего не говорил, как не крути у флешплеера она больше.
А проблемы подготовки графики это уже проблемы кривых рук.

Видео:
flv это хорошее сжатие, но и возможность лайфстриминга, перемотки и других фич
из коментариев:
+ есть поддержка HD video
Флешплеер это тоже поддерживает.
+ теоретически, поддержку flv можно реализовать самому, используя MediaStreamSource (тут есть примеры http://code.msdn.microsoft.com/ManagedMediaHelpers)
нужна практика а не теория, хотя такой возможностью флеш не может покак порадовать.
Как не крути пока приоритет на стороне флеша

Шрифты:

Имеет три встроенных шрифта, поддерживается импорт символов из шрифтов ТТF, ограниченно поддерживаются шрифты, установленные в системе.

просто глупость.
Мы можем влючить любой шрифт в наше приложение, и он будет работать везде.
3 шрифта, тоже глупость, Просто по умолчанию флекс компоненты используют заданые шрифты, и нечего более.

Формально, не импортированные шрифты поддерживаются. Однако, с текстом, напечатанным таким шрифтом, почти ничего нельзя делать: ни поворачивать, ни масштабировать, ни использовать в качестве маски.

Раньше (9 и ниже версии плеера) и вправду не позволяли таких операций как вращение, масштабирование (вытягивание по какой-то оси), в 10 плеере вы можете делать с любым шрифтом, что угодно и как угодно.

Сокеты:
незнаю что твориться в Silverlight, но в FlashPlayer к сожелению имеет некоторые ограничения :(

Работа с файлами:
Принципиальное преисущество было у Silverlight до выхода 10 версии флешплеера, теперь его нет ).

Хранение данных на клиенте:
хе хе пункту просто не зачет. никак не может влиять на оценку платформы.

Разметка:
Спорный вопрос. Я бы не ставил плюса ни одной из технологий.
Если говорить о скором будующем то будет революция 😉 Ключевое слово Flash Catalyst

«Программное» рисование:
Незнаю как обстоят дела в Silverlight, но во флеш им можно творить чудеса.

«Программная» анимация:

Flash/Flex: Основана на фрэймах.

Никто не мешает использовать верменные интервалы. т.е. больше возможностей ).
Я не спец в этой области и пусть те кто работают с FlashCS3|CS4 добавят свои коменты. ).

Собственные контролы:
Автор описал только один, довольно причудливый способ :).
Да. Визуально не всегда сразу можно посмотреть на внешний вид компонента.
Опять же для спора и нахождения истены в данном вопросе нужно сначало определиться с понятием “Собственный контрол”.

Кастомизация контролов
Я незнаю как работают стили в WPF, но

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

Полный бред. Для начала ознакомтесь с возможностями стилировния, затем полистайте примеры на той же Деграфе. Стили во флексе ограничиваются только фантазией, как только она закончилась, так и закончились стили )

Связывание данных

Да, во Flex не создается как таковой объект биндинга

Он то создаеться, но вот доступа мы к нему не имеем. Также есть возможность создать биндинг в коде BindingUtils

А двусторонний биндинг, единственный пока что козырь Silverlight, во Flex добавят в Gumbo.

В Flex 2|3 это также легко реализуется, как в коде так и с использованием MXML :)

Реализация MVC
Flex Framework и есть реалиация MVC просто она скрыта от глаз программистов. Поэтому они не разобравшись пугаються и пытаюстся насочинять своих фреймворков ).
А насочиняли их уже много Cairngorm/PureMVC/Mate/Guasax/Model-Glue… и так далее.

Вроде пока все, что пришло на ум.

Поэтому я бы не спешил делать такие опрометчивые выводы, незная не платформы, и незная текущего состояния вещей.
В скором вермени (2009 год) Adobe ух как пошатнет преимущества разработки под сильверлайт, И я бы не стал говорить, что “с точки зрения удобства для разработчика “серебренный свет” уже вне досегаемости”.

Единственными весомым преимуществами Silverlight является:
– большее количество “тяжолых” разработчиков, которые прошли огонь и воду в програмирование под C# и т.д. В отличаии от разработчиков Flex которые в большей части работали во Флеш
– политика отношения Microsoft к разработчикам, ее тактика “Мы везде и никто кроме нас)”. Обучение, бонусы и т.д.

ЗЫ
Неосвещенным остался вопрос производительности, но это тема для отдельного большого исследования.
Как показывает практика FlashPlayer быстрее в графике, как не крути, нельзя сказать что намного, но все же приятно :)



Начинаем изучать Flex 3

Thursday, November 13th, 2008

Hезнание английского не освобождает от ответственности

Как показывает практика, все обучение сводится к чтению и пониманию правильно расставленных буков.
А профессионалы, кроме того, что знают много разных вещей, и разбираются в правильно расставленых буквах, еще знаю где быстро и эффективно найти новые буквы чтобы ответить на то, что они еще не знают, или уже забыли.
Поэтому начало и дальнейшее изучение флекс я сведу обзору где и что можно найти.

Обзор документации и книг по Adobe Flex:

Официальную документацию по Flex 3/Flex Builder 3 от производителя можно найти на сайте адоба. http://www.adobe.com/support/documentation/en/flex/ Данная ссылка содержит большой список полезной документации, сделаем ее краткий обзор:

Первых 4 ссылки содержит документы описывающие установку флекс билдера и описание его функциональности (для тех кто незнаком с Eclipse платформой или кто хочет обновить свои знания стоит почитать Using Adobe Flex Builder 3 http://livedocs.adobe.com/flex/3/using_fb_flex3.pdf )

Adobe Flex Language Reference — документация по ActionScript3 и Flex 3. Она также есть в хелпе, который поставляется вместе с Flex Builder 3.

Flex 3 Developer Guide — глобальный и полный мануал по флекс, о разработке флекс приложений. Полностью описаны возможности фреймворка. Примеры кода, работа с компонентами, общение с сервером. 1300+ страниц наполненных информацией.

Programming ActionScript 3.0 — мануал о программирование на ActionScript 3. Начиная от описания синтаксиса, заканчивая работой с принтером и видео. Советую ознакомиться вначале, если вы незнакомы с АС3.

Также там много полезных мануалов на все случаи программирования на флекс 3 (Скинование, создание собственных компонент, оптимизация приложений…) Документации выполнена очень качественно и ее очень много, для начала изучения и работы с Flex 3 ее должно хватить с головой!

В конце страницы есть ссылка на архив со всей документацией.

Для тех, кто любит бумагу, уже написаны книги. Естественно, они все на английском, и купить у нас их проблематично :

Книги о ActionScript 3 (я их не листал, а те что листал уже не помню и коментировать не буду):

  • ActionScript 3.0 – Advanced Design Patterns (2006)
  • ActionScript 3.0 – Bible (Wiley)
  • ActionScript 3.0 – Design Patterns (OReilly.Jul.2007)
  • ActionScript 3.0 – Essential (OReilly.Jun.2007)
  • ActionScript 3.0 – Foundation Animation (FriendsofED.Apr.2007)
  • ActionScript 3.0 – Foundation With Flash CS3 and Flex (FriendsofED)
  • ActionScript 3.0 – Learning – A Beginners Guide (OReilly.Jan.2008)
  • ActionScript 3.0 – Object.Oriented (FriendsofED.Jul.2007)
  • ActionScript 3.0 – Programming
  • ActionScript 3.0 – Using Components
  • FriendsofED Foundation Flash CS3 Video
  • OReilly.Learning.Flash.Media.Server.3.Mar.2008

Книги по программированию на Flex 2/3:

Learning Flex 3 book

Learning Flex 3: Getting up to Speed with Rich Internet Applications
Веселая книжка по введению в разработку на Flex 3, обзор средств разработки, описание как их использовать, описание базовых вещей флекс-фреймворка, ничего сложного. Для новичка самое оно, чтобы получить представление о технологии и начать ее использовать.

Flex 3 – A Beginners Guide (McGraw.Hill.Mar.2008)
Первых 2 главы смело пропускаем (1. рассуждения на тему. 2. установка и настройка). Остальные можно смотреть через строчку. В книге дано краткое описание ActionScript3 и MXML. Очень кратко описаны возможности Flex 3 и Flex Builder 3. Книгу стоит почитать тем, кто только начинает свою работу с flex 3, больше ничего интересного в ней нет.

Flex 2 - Programming (OReilly) book

Flex 2 – Programming (OReilly)
Классика жанра. Немного теории о RIA, затем рассмотрены возможности ActionScript3 и Flex, много примеров кода и много картинок. То что она написана Flex 2 это не страшно. Я бы посоветовал ее как настольную книгу начинающего и продолжающего Flex-программиста.

The Essential Guide to Flex 2 with ActionScript 3.0 The Essential Guide to Flex 3

The Essential Guide to Flex 2 with ActionScript 3.0 | The Essential Guide to Flex 3 (FriendsofED)
Что похожее на Flex 2 – Programming (OReilly), но как по мне хуже. Общий обзор возможностей Flex.

AdvancED Flex Application Development: Building Rich Media X
Вначале немного рассказывается о Flex и Веб 2.0, Чем флекс хорош для создания RIA. Затем авторы на примере создания социальной сети рассматривают возможности Flex. Книга интересна тем, что в ней по порядку рассматривается разработка большого проекта, от задумки, возможностей, выбора средств разработки до реализации как клиента, так и серверной части. Естественно, что клиента они делают на Flex, а в сервер строят на основе движка Drupal. Книгу стоит почитать для развития кругозора и понимания как создается RIA . Как справочник по Flex она сильно годится.

Flex 3 Cookbook: Code-Recipes, Tips, and Tricks for RIA Developers

Flex 3 Cookbook: Code-Recipes, Tips, and Tricks for RIA Developers (OReilly.May.2008)
Список рецептов для Flex 3. Очень полезная книга, дает готовые решения большинства стандартных проблем, а также дает «отправные точки» для дальнейшего поиска. Советую держать ее под рукой.

Flex Solutions: Essential Techniques for Flex 2 and 3 Developers (FriendsofED)
Книга из разряда кукбуков, но если «Flex 3 – Cookbook» содержит советы о написании кода, то данная книга содержит еще советы и решения проблем связанных с настройками среды разработки. Все советы разложены по полочкам. Советую держать под рукой.

Foundation Flex for Developers

Foundation Flex for Developers (FriendsofED.Dec.2007)
Первая часть книги посвящена введению в флекс программирование. Вторая часть посвящена общению флекс приложений с сервером, используя ColdFusion, ASP.NET или PHP (как по мне довольно грустное описание так как все строиться на передаче ХМЛ, альтернативные способы, к сожалению, не рассмотрены). Третья часть посвящена работе LiveCycle Data Services (LCDS), ничего сказать не могу, опыта не имел и подробно не читал :)

Foundation Flex for Designers

Foundation Flex for Designers (FriendsofED.Jan.2008)
Книга о стилировании используя Flash, Photoshop, Illustrator и Fireworks и их интеграция с флекс. Использование дизайнер вью для создания приложения, форм, компонент. Ничего сказать немогу по поводу данной книги, мне не понравилась и нужна ли она дизайнерам ? :)

Данный список не является полным, книг по Flex 3 гораздо больше. При составлении я использовал только те книги копии которых я смог найти в сети (да простят меня их авторы)

Что же читать?

Читать нужно документацию от Адоба, она очень хорошая и охватывает практически все аспекты разработки РИА приложений используя Adobe Flex

В качестве старта для человека которому неведом мир Flex и ActionScript 3 советую начать изучение с прочтения книг:

  • ActionScript 3.0 – Essential (OReilly.Jun.2007)
  • Flex 3 – Learning (O’Reilly.Jun.2008)
  • Flex 2 – Programming (OReilly)
  • И незабывать про глобальный мануал от адоба
  • Также полезно иметь под рукой Flex 3 Cookbook и Flex Solutions: Essential Techniques for Flex 2 and 3 Developers

    После изучения этих книг, я думаю вы сможете уже сами продолжить свой путь в рядах флексеров! Удачи!



    Fix AnimatedGif for using in Flex 3

    Friday, September 5th, 2008

    Есть замечательный компонент который может проигрывать гиф анимацию во флексе.

    http://dougmccune.com/blog/2007/01/17/animatedgifloader/

    Ведет он себя также как стандартный Image + умение проигрывать гиф анимацию.

    Единственный его недостаток в том, что он не хочет работать с Flex 3.

    Но есть способ заставить его это делать. Вся загвоздка в том, что ему нехватает нужных ресурсов (ResourceBundle), их(вернее его) просто убрали в Flex 3 фреймворке. И нам всего лишь нужно его добавить.
    Рецепт:

    создаем папку bundles/en_US/ в которую копируем файл {Билдер}/sdks/3.0.0/frameworks/projects/framework/bundles/en_US/src/containers.properties

    и добавляем в него строку

    outOfRange=out of range или по вкусу что вам угодно

    И в опциях компилятора указываем:

    -locale en_US -source-path=../bundles/{locale} -allow-source-path-overlap=true

    Компилируем и все отлично!.



    Как работает AS3.0 и AVM2 изнутри

    Tuesday, July 22nd, 2008

    Ребята из dispatchEvent() (Collective thoughts of the New York Flash community) поняли, что флеш-девелоперы “не въезжают” в принципы работы AS3.0 и AVM2. И эту ситуацию они пытаются исправить двумя доками:

    Actionscript 3.0 and Performance Tuning

    AVM2 Overview

    Первая – это 74 слайда (в pdf, подготовленные Gary Grossman’ом из Adobe) которые будут мегаполезными для понимания таких частей AVM2 как garbage collection, преимущества строгого типизирования, Actionscript byte code (abc) формат, code interpreter и JIT compilation. Для всех кто кодит на AS3 это must-read!

    Вторая, значительно более “конденсированная”. В ней 108 страниц которые сухо объясняют всю подноготную работы AVM, показывает как AS3.0 команды “переходят” в процессорные инструкции. Короче – дока для настоящих гиков ::)))

    Мой вердикт: первую читать обязательно, вторую – если есть свободное время…



    Stage vs SystemManager

    Sunday, July 6th, 2008

    Пользователям флекс фреймворка советуют использовать SystemManager вместо Stage (ну или я не так это понимаю)

    All keyboard and mouse activity that is not expressly trapped is seen by the SystemManager, making it a good place to monitor activity should you need to do so.

    Раз советуют, значит так нужно, но не всегда советы работают как нужно!

    Неудобства начинаются когда мы хотим что-то потаскать мышкой. Если использовать startDrag() или слушать событие MouseEvent.MOUSE_MOVE/MouseEvent.MOUSE_UP, то при уводе мыши за границы флеш плеера объект просто залипает на последней позиции позиции мыши в окне флеш плеера. Если опустить мышь за окном плеера, то по возвращению в плеер объект будет носиться за мышью до последующего клика. Побороть это можно повесив все события на Stage.

    Эти штуки можно посмотреть в примере.

    Используйте SystemManager с умом, но не забывайте про Stage.

    ps. вордпресс отстой, операция вставки флешки превращается в извращения.

    upd: забыл сказать, что в чистом АС3 проекте startDrag() и Stage ведут себя также плохо и хорошо



    
    ]]> rss о RIA от 33 Коровы
    Забадать RSS!
    ]]>
    ~~~~~~