Flex и RIA блоги
2007-06-27 |
List и дубликаты в датапровайдере Давно заметил следующую теперь уже наверно фичу: Сделаем маленький пример: <?xml version="1.0" encoding="utf-8"?> В данном случае, если навести мышь на второй элемент, который идентичен третьему, то отработает наведение последний. Я думал, что это баг. Отнюдь. Вычитал из Jira, что List не должен иметь одинаковых элементов - все элементы коллекции должны иметь уникальный id, например, public var listData:Array = [{label:"alpha", data: "01"}, {label:"beta", data: "04"}, {label:"beta", data: "90"}, {label: "gamma", data: "4"}, {label:"delta", data: "8"}];
|
List и дубликаты в датапровайдере Давно заметил следующую теперь уже наверно фичу: Сделаем маленький пример: <?xml version="1.0" encoding="utf-8"?> В данном случае, если навести мышь на второй элемент, который идентичен третьему, то отработает наведение последний. Я думал, что это баг. Отнюдь. Вычитал из Jira, что List не должен иметь одинаковых элементов - все элементы коллекции должны иметь уникальный id, например, public var listData:Array = [{label:"alpha", data: "01"}, {label:"beta", data: "04"}, {label:"beta", data: "90"}, {label: "gamma", data: "4"}, {label:"delta", data: "8"}]; |
Класс ImageSnapshot (Flex SDK 3) В третьем SDK появился класс ImageSnapshot, который облегчает работу при создании скриншотов UI-компонентов. Класс ImageSnapshot имеет несколько методов для создания снэпшотов компонентов и кодирования их в PNG или JPEG изображения. В дополнение к этому классу появились также PNGEncoder, JPEGEncoder, Base64Encoder и Base64Decoder, которые раньше были в as3corelib. mx.graphics.codec.JPEGEncoder mx.graphics.codec.PNGEncoder mx.graphics.codec.IImageEncoder Интерфейс IImageEncoder служит для классов, которые перекодируют объекты BitmapData в ByteArray. Два вышеназванных класса (PNGEncoder и JPEGEncoder) имплементируют этот интерфейс. Если вы захотите написать свой перекодировщик, то он должен имплеменировать этот интерфейс тоже. mx.graphics.ImageSnapshot Класс ImageSnapshot облегчает работу с захватом снимков Flex-компонентов. Применений этому множество: создание отражений, или, например, сохранение изображений у пользователя. Если раньше для получения Base64-строки снимка Flex UI-компонента необходимо было сделать так: private function getBase64String(component:UIComponent):String) { То теперь нам поможет класс ImageSnapshot: captureBitmapData Этот метод возвращает объект BitmapData, ограниченный 2880 px по ширине и высоте. captureImage Этот метод возвращает объект ImageSnapshot. В параметре функции можно передать тип кодировки - PNG или JPEG. После получения объекта ImageSnapshot мы имеем ByteArray изображения, который потом можно использовать по своему усмотрению. encodeImageAsBase64 Этот метод получает объект ImageSnapshot и кодирует его в Base 64 строку. Итак, перепишем наш пример: private function getBase64String(component:UIComponent):String) { или в одну строку: private function getBase64String(component:UIComponent):String) { Обход максимального размера в 2880 px Для захвата компонентов с большим размером есть метод captureAll, который создает несколько объектов BitmapData и объединяет их в один ByteArray. Но здесь есть ограничение - максимум 256Мб для ByteArray. Итак, ничего нового, просто все приведено в порядок и собрано в одном месте, что позволяет сэкономить пару-тройку строк кода:) |
Класс ImageSnapshot (Flex SDK 3) В третьем SDK появился класс ImageSnapshot, который облегчает работу при создании скриншотов UI-компонентов. Класс ImageSnapshot имеет несколько методов для создания снэпшотов компонентов и кодирования их в PNG или JPEG изображения. В дополнение к этому классу появились также PNGEncoder, JPEGEncoder, Base64Encoder и Base64Decoder, которые раньше были в as3corelib. mx.graphics.codec.JPEGEncoder mx.graphics.codec.PNGEncoder mx.graphics.codec.IImageEncoder Интерфейс IImageEncoder служит для классов, которые перекодируют объекты BitmapData в ByteArray. Два вышеназванных класса (PNGEncoder и JPEGEncoder) имплементируют этот интерфейс. Если вы захотите написать свой перекодировщик, то он должен имплеменировать этот интерфейс тоже. mx.graphics.ImageSnapshot Класс ImageSnapshot облегчает работу с захватом снимков Flex-компонентов. Применений этому множество: создание отражений, или, например, сохранение изображений у пользователя. Если раньше для получения Base64-строки снимка Flex UI-компонента необходимо было сделать так: private function getBase64String(component:UIComponent):String) { То теперь нам поможет класс ImageSnapshot: captureBitmapData Этот метод возвращает объект BitmapData, ограниченный 2880 px по ширине и высоте. captureImage Этот метод возвращает объект ImageSnapshot. В параметре функции можно передать тип кодировки - PNG или JPEG. После получения объекта ImageSnapshot мы имеем ByteArray изображения, который потом можно использовать по своему усмотрению. encodeImageAsBase64 Этот метод получает объект ImageSnapshot и кодирует его в Base 64 строку. Итак, перепишем наш пример: private function getBase64String(component:UIComponent):String) { или в одну строку: private function getBase64String(component:UIComponent):String) { Обход максимального размера в 2880 px Для захвата компонентов с большим размером есть метод captureAll, который создает несколько объектов BitmapData и объединяет их в один ByteArray. Но здесь есть ограничение - максимум 256Мб для ByteArray. Итак, ничего нового, просто все приведено в порядок и собрано в одном месте, что позволяет сэкономить пару-тройку строк кода:) |
Различия между Flex SDK 2.01 и 3 Все различия данных версиях можно наглядно посмотреть здесь. Страница еле грузится, правда. |
Различия между Flex SDK 2.01 и 3 Все различия данных версиях можно наглядно посмотреть здесь. Страница еле грузится, правда. |
2007-06-25 |
Как снова подружить Apache Ant и FlashDevelop 3 Наверняка многие читали статью Андрея Горбатова про разработку Flex приложений во FlashDevelop IDE. Одним из ключевых моментов в этой статье было добавление кнопки сборки проекта с использованием Apache Ant на панель инструментов программы. Но с выходом FlashDevelop 3 Beta метод, описываемый в статье, не будет работать. Это связано с тем, что в новой версии программы была убрана поддержка команды |
Как снова подружить Apache Ant и FlashDevelop 3 Наверняка многие читали статью Андрея Горбатова про разработку Flex приложений во FlashDevelop IDE. Одним из ключевых моментов в этой статье было добавление кнопки сборки проекта с использованием Apache Ant на панель инструментов программы. Но с выходом FlashDevelop 3 Beta метод, описываемый в статье, не будет работать. Это связано с тем, что в новой версии программы была убрана поддержка команды |
2007-06-24 |
ResourceThief Проект SWFExplorer было решено распилить на две части, одну из которых я вам представляю. з.Ы. Насчет второй части проекта пока никаких прогнозов дать не могу, ибо сейчас довольно сильно занят, да и эта часть в большинстве случаев никому не нужна в рантайме. Вполне возможно, что часть, отвечающая за поиск информации о классах будет доступна в виде класса, а часть, отвечающая за декомпиляцию будет представлена в виде AIR-приложения (скорее всего не open-source). |
2007-06-22 |
Flash+PDF = Alive PDF Поддержка просмотра PDF в AIR beta, конечно, радует(хотя список ограничений - не очень). |
State of Security Открылся очень интересный блог, посвященный безопасности Adobe AIR и Adobe Flex, причем AIR в приоритете. Его автор - Лукас Адамски, который занимается в Adobe именно этими вопросами. Пока ни одного поста там нет, но уже появляются комментарии с вопросами, в том числе довольно интересными. Последний вопрос на данный момент касается SoundMixer.computeSpectrum() и BitmapData.draw(), а точнее - причины довольно жестких ограничений в безопастности при их использовании. Вопрос мне тоже крайне интересен, т к ограничения в draw уже 2 раза устраивали мне проблемы на последних этапах разработки проектов, а computeSpectrum я использую в текущих разработках. Кроме того, обещаны статьи о проблемах в безопасности AIR и др. и их решениях, что крайне важно ввиду быстрого распространения технологии. |
2007-06-18 |
Обновление FontLoader Обновился FontLoader. Исправлено пару косяков (правильный поиск тегов), изменена логика работы — теперь регистрация шрифтов производится не FontLoader-ом, а вручную. Экспорт шрифтов запускается также вручную. |
Preview: Quick Start + WAP Сайты на самом последнем Quick Start будут доступны через WAP автоматически! Предварительные примеры: Авторские впечатления и технические особенности можно прочитать в полном тексте. |
Технические проблемы Вчера ночью на хостинге исчезла половина файлов, в том числе блог. Хорошо, база сохранилась. Восстанавливаю…. |
2007-06-17 |
Flex Future Features: Graphic Tags Кроме распланированных по стадиям релиза фич, есть вещи, время внедрения которых не определено. Пока их перечислено всего две: графические теги и импорт векторных изображений, на них же построенный. Идея такова: создание в MXML как простых, так и сложных фигур, применение к ним различных типов заливок, фильтров и т п. Радует, что уже существует прототип, но он, к сожалению еще “not ready for Labs” |
2007-06-15 |
SWFExplorer SWFExplorer — инструмент, с помощью которого вы можете загрузить любой swf и использовать из него такие ресурсы как шрифты, изображения и звуки. Для роликов с AS3 с помощью SWFExplorer можно получить подробную информацию о классах, находящихся в данном ролике в удобном XML-формате (напоминает XML, генерируемый утилитой descibeType пакета flash.utils), а именно о классах (в т.ч. internal), константах, методах (принимаемые аргументы, тип выходных данных) и переменных класса. Также в нагрузку декомпиляция классов в исходный код. Функция декомпиляции в данный момент находится в разработке, есть проблемы в декомпиляции e4x-выражений (в реальности они выглядят совсем не так, как пишется в AS, многие безобидные на первый взгляд строки создают очень много кода). Я хочу получить от вас пожелания к данной разработке и что вы хотели бы получить из загруженного swf, а также идеи и дополнительные возможности, которые можно добавить в функционал класса-декомпилятора. з.Ы.: Сроков выхода пока не сообщаю, потому как в ходе разработки декомпилятора сталкиваюсь с различными трудностями и проблемами, которые с ходу решить не получается. Весь перечисленный функционал, кроме декомпиляции в исходный код, уже полностью реализован. |
2007-06-12 |
Apollo Desktop Photos 1.0.2 Как водится, сразу же после моего маленького релиза Apollo Desktop Photos 1.0 (см. предыдущий пост) последовал БУМ! Adobe выпустила бету-версию Apollo, под названием AIR (Adobe Integrated Runtime). К сожалению, декларируется несовместимость с Apollo Alpha 1, на которой вышло уже не так мало приложений; более того, разрабатывать приложения на AIR можно будет только в Flex 3, бета-версия которого вышла вчера же и доступна для скачивания. Было два сайта, которые целенаправленно собирали Apollo-приложения (программа, кстати, там была опубликована): apolloapps.com и apollohunter.com. И слово “Apollo” было красивое, и все к нему привыкли… в общем, на мой взгляд, название поменяли зря. Сейчас apolloapps.com перебирается на airapps.net… но при моей попытки опубликовать свежую версию программы сказал, что что-то там не в порядке с описанием. Ну, понятно - поменяли структуру файла описания приложения, портал еще это не отследил… в общем, на несколько ближайших дней проблемами Apollo-сообщество обеспечено. Возвращаясь, к Apollo Desktop Photos, могу отметить две проблемы: Во-первых, есть несовместимость версий - все новые приложения будут писаться на AIR, под который Apollo-программы не работают. Так что я лично рекомендую вам снести все Apollo-приложения, благо ценных там не так много, поставить AIR и ждать. Пока все разработчики обновятся, закачают Flex 3 (я это проделал вчера ночью) и быстренько перенесут Apollo-приложения под AIR (правка в несколько строк). Я это уже сделал: Скачать Apollo Desktop Photos 1.02 (560 Кб) Перед инсталляцией надо удалить Apollo Alpha и поставить AIR Beta. Кстати, в Adobe клятвенно пообещали, что такого безобразия с версиями больше не будет (см. страницу скачки). В версии ничего не поменялось (добавилось пара глюков со стилями - т.е., интерфейсом), но она работает под AIR. Во-вторых, (философское) я в раздумьях, что мне сделать с названием программы. Честно говоря, менять не хочу. |
Встречайте Safari для Windows Как-то “подозрительно” странно, параллельно с бетой Adobe-AIR анонсирован новый браузер для Windows - Safari. Видимо специально, для будующих разработчиков AIR-приложений. Головных болей у ХТМЛ-верстальщиков прибавится, и ведущим сайт-мейкерам надо будет пересмотреть свои взгляды на совместимость браузеров. Погоняв немного браузер - убедился, что он как и четыре года назад неадекватно отображает сайты, портя даже невинную Гугл-рекламу, а на сайте Адоба не отобразил навигационное меню. После пяти минут работы Safari выдал GP и завершил работу, что поделаешь, всё-таки бета… Скачать это новое чудо искуззтва можно по ссылке: P/S Мде, видимо я чего-то не понимаю, корпоративные решения Адоба у меня постоянно вызывают недоумения. У меня блуждали мысли, что в конце-концов Адобовцы одумаюся, и вставят в AIR - XulRunner (вместе с JavaScript 1.8-2.0). Но видимо реклама iPod-ов круче, чем технологические возможности Мозиллы. Мои мечты тесно скомбиноровать XUL и SWF (на уровне десктопной аппликухи) - отодвигаются на неопределенное будующее З.З.Ы. По словам Джобса, на данный момент Safari является быстрейшим браузером для Windows, затрачивая на отображение веб-страниц в два раза меньше времени чем Internet Explorer 7 и в 1,6 раза меньше чем Firefox 2. Сейчас программа имеет статус бета-версии, скачать ее можно с сайта Apple.
Имхо, ещё возможности и ресурсы по ускорению отрисовки имеются |
2007-06-11 |
Apollo Desktop Photos 1.0 Маленький фотобраузер, написанный на Apollo. (Страница проекта, английская) - (Все записи блога про Apollo Desktop Photos) Обновления в версии 1.0
Мысли от автора: Прекрасно зная, что просмотрщиков фотографий пруд пруди, предполагал, что данный проект развиваться не будет. Однако, немного поигравшись, неожиданно понял, что эффекты, которые, в общем-то, являются украшательствами, создали какое-то новое свойство программы: мне, как пользователю, хочется кликнуть на фотографию и посмотреть, как она выезжает. Некая неторопливость, плавные переходы - они создают новое ощущение от просмотра. Спокойствие, последовательную (а не резкую!) смену ассоциаций. А раз так, пока есть хоть малая надежда, что изобретено что-то новое - буду по мере сил стараться развивать проект. |
2007-06-08 |
Flex 3 - баги DeepLinking в Firefox Тед Патрик обрадовал диплинкингом, который будет встроен в 3 Флексе. (1 и 2) Но, еще работая с SWFAddress, я заметил следующий баг в Firefox'е: если зайти в адресную строку для ручного изменения адреса, а потом перевести фокус обратно на страницу, то адресная строка перестает редактироваться и весь DeepLinking отрубается, до тех пор, пока не перезайти на эту вкладку с другой. Как говорит автор SWFAddress, это баг Firefox и победить его пока не получилось. |
Flex 3 - баги DeepLinking в Firefox Тед Патрик обрадовал диплинкингом, который будет встроен в 3 Флексе. (1 и 2) Но, еще работая с SWFAddress, я заметил следующий баг в Firefox'е: если зайти в адресную строку для ручного изменения адреса, а потом перевести фокус обратно на страницу, то адресная строка перестает редактироваться и весь DeepLinking отрубается, до тех пор, пока не перезайти на эту вкладку с другой. Как говорит автор SWFAddress, это баг Firefox и победить его пока не получилось. |
2007-06-07 |
Flex 3:Moxie - НеРеальный Кул Не удержался, чуть не упал под стуллллл. Тед Патрик весьма наглядно рассказывает об уменьшении размеров SWF. Это настолько выглядит нереально, что слов нет!!! Вроде мечты флекс-программеров начинают сбываться (я так понял - недоношенные RSL превращаются в концептуальное подобие DLL) . http://www.onflex.org/ted/2007/06/flex-3-thursday-dramatically-smaller.php |
2007-06-06 |
Вышел Quick Start 3.2 После почти двухмесячного перерыва в версиях, выпустил сегодня Quick Start 3.2. Было время, когда бета-версии выпускались каждую неделю, и все с большими улучшениями, а сейчас - это единственный релиз за прошедшее время, да и то больше с косметическими изменениями. Ну, кроме повышенной интеграции с Xmini (Flash CMS) - благодаря системе кеширования теперь не надо подгружать при каждом посещении сайта сервисы, которые весят, как Flex-приложения 200-300 Kb. Кроме того, подготовка server-side для загрузки файлов через Flex. Думаю, есть две причины столь большого перерыва:
Так что дальнейшее развитие движка пойдет, скорее всего, в сторону интеграции с Xmini и наращивания “мускулов” соответствующих сервисов. Надеюсь, из этого очень скоро получится что-нибудь интересное |
2007-06-05 |
UITextField, как альтернатива Label При большом количестве меток (да и вообще компонент) и частой их отрисовке вы непременно столкнетесь с тормозами. В случае с метками есть альтернатива в лице mx.core.UITextField, которой и посвящен этот пост. Что нас привлекает в mx.controls.Label? Возможность отобразить некий текст и применить к нему стили. UITextField нам эти возможности предоставляет так же. Однако есть одна тонкость. Как работать со стилями если: public function setStyle(styleProp:String, value:*):void - Does nothing. A UITextField cannot have inline styles. Не очень понятно зачем вообще нужен этот метод если он ничего не делает. Была мысль, что он описан в каком-то из имплементящихся интерфейсов, но подтверждения этому в коде найти не удалось. Впрочем я отвлеклась. Ну так как же работать со стилями? Да в общем точно так же, только через свойство styleName.
|
2007-06-04 |
Экспорт изображения без помощи сервера Почти все браузеры, кроме IE, поддерживают data: URI scheme, то есть для отображения изображения можно в src передавать не ссылку на него, а его код. Например, так выглядит красная точка: <img src="data:image/png;base64, Правда, отображать таким образом можно относительно небольшие изображения, зато появляется возможность создавать live-скриншоты приложения без помощи сервера. Хороший пример с исходным кодом есть у Дуга МакКуна. |
Экспорт изображения без помощи сервера Почти все браузеры, кроме IE, поддерживают data: URI scheme, то есть для отображения изображения можно в src передавать не ссылку на него, а его код. Например, так выглядит красная точка: <img src="data:image/png;base64, Правда, отображать таким образом можно относительно небольшие изображения, зато появляется возможность создавать live-скриншоты приложения без помощи сервера. Хороший пример с исходным кодом есть у Дуга МакКуна. |
2007-06-02 |
Apollo Desktop Photos 0.9 Маленький фотобраузер, написанный на Apollo. (Страница проекта, английская) Скачать Apollo Desktop Photos 0.9 (540 Kb) - Install Apollo Runtime first (6 Mb) Вот сама программа: Использовать очень просто: достаточно найти папку с фотографиями (в формате JPG). По клику на маленькое изображение фотография полностью появляется. По еще одному - исчезает. |
2007-05-30 |
Flex 2.0.1 Hotfix 2 29.05.2007 Вышел второй ХотФикс: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb401825 Как уже стало доброй традицией ХотФиксов, файлы в архиве полуторомесячной давности от 19.04.2007. Видимо 1.5 месяца требуется огромной команде экспертов из Адоба, для выяснений не перефиксили-ли (не дай бог), чего лишнего, шоб ХотФиксов еще на год-два осталось. Выправлены мелочёвочные ошибки. Как всегда - основная масса багов осталась за бортом (детские ошибки со скроллами, дублирование картинок в менюхах, невыгрузка модулей … и т.д. и т.п.) Ну и на том спасибо, компетентные люди говорят, что на Flex 1.5, вообще не вышло ни одного исправления. P/S Меня тут вконец задолбал ватермарк на “Графиках” - “Flex Charting Trial”. Решил подкинуть Адобу на бедность 300 кровных баксов. Ну как выяснилось, через онлайн шоп - Адоб в России не торгует, и на Российские Визы с Мастеркартами (вместе взятые, или по-отдельности), ему глубоко покласть. Решил обратиться к Российскому дилеру - “так-мол и так, нужна легальная копия зарегистрированная на себя любимого“. Дилер - покрутил пальцем у виска, типа - “вот долпайоп“, не может серийник через ослика вытянуть. Но в грубой форме посылать нах не стал, а отписался, цитируя вышестоящее руковоство: Если он хочет полной легальности - то эта прога не предназначена для продажи в России и таким образом Лицензионное соглашение действовать не будет. В смысле нарушено в самом начале. Чего делать не знаю, видимо чтобы честно купить “Flex Charting”, надо сменить гражданство или открыть офшор |
Подсветка ActionScript 3 Вышла опенсорсная (BSD) библиотека для подсветки AS3 кода. Вот наглядный примерчик. Скачать библиотеку можно отсюда |
Подсветка ActionScript 3 Вышла опенсорсная (BSD) библиотека для подсветки AS3 кода. Вот наглядный примерчик. Скачать библиотеку можно отсюда |