Flex и RIA блоги



2007-06-27

13:32:00, Flex 2 & Co
List и дубликаты в датапровайдере
Давно заметил следующую теперь уже наверно фичу:
Сделаем маленький пример:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
[Bindable]
public var listData:Array = ["alpha", "beta", "beta", "gamma", "delta"];
</mx:Script>
<mx:List dataProvider="{listData}"/>
</mx:Application>


В данном случае, если навести мышь на второй элемент, который идентичен третьему, то отработает наведение последний. Я думал, что это баг. Отнюдь. Вычитал из 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"}];

13:32:00, Flex 2 & Co
List и дубликаты в датапровайдере
Давно заметил следующую теперь уже наверно фичу:
Сделаем маленький пример:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
[Bindable]
public var listData:Array = ["alpha", "beta", "beta", "gamma", "delta"];
</mx:Script>
<mx:List dataProvider="{listData}"/>
</mx:Application>


В данном случае, если навести мышь на второй элемент, который идентичен третьему, то отработает наведение последний. Я думал, что это баг. Отнюдь. Вычитал из 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"}];

01:27:00, Flex 2 & Co
Класс 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) {
var bitmapData:BitmapData = new BitmapData(component.width, component.height, true, 0xffffff);
bitmapData.draw(component);

var bytes:ByteArray = PNGEncoder.encode(bitmapData);

var b64encoder:Base64Encoder = new Base64Encoder();
b64encoder.encodeBytes(bytes);

var b64String:String = b64encoder.flush();

return b64String;
}


То теперь нам поможет класс ImageSnapshot:

captureBitmapData
Этот метод возвращает объект BitmapData, ограниченный 2880 px по ширине и высоте.

captureImage
Этот метод возвращает объект ImageSnapshot. В параметре функции можно передать тип кодировки - PNG или JPEG.

После получения объекта ImageSnapshot мы имеем ByteArray изображения, который потом можно использовать по своему усмотрению.

encodeImageAsBase64
Этот метод получает объект ImageSnapshot и кодирует его в Base 64 строку.

Итак, перепишем наш пример:

private function getBase64String(component:UIComponent):String) {
var snapshot:ImageSnapshot = ImageSnapshot.captureImage(component);
var b64String:String = ImageSnapshot.encodeImageAsBase64(snapshot);
return b64String;
}


или в одну строку:

private function getBase64String(component:UIComponent):String) {
return ImageSnapshot.encodeImageAsBase64(ImageSnapshot.captureImage(component));
}


Обход максимального размера в 2880 px
Для захвата компонентов с большим размером есть метод captureAll, который создает несколько объектов BitmapData и объединяет их в один ByteArray. Но здесь есть ограничение - максимум 256Мб для ByteArray.

Итак, ничего нового, просто все приведено в порядок и собрано в одном месте, что позволяет сэкономить пару-тройку строк кода:)

01:27:00, Flex 2 & Co
Класс 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) {
var bitmapData:BitmapData = new BitmapData(component.width, component.height, true, 0xffffff);
bitmapData.draw(component);

var bytes:ByteArray = PNGEncoder.encode(bitmapData);

var b64encoder:Base64Encoder = new Base64Encoder();
b64encoder.encodeBytes(bytes);

var b64String:String = b64encoder.flush();

return b64String;
}


То теперь нам поможет класс ImageSnapshot:

captureBitmapData
Этот метод возвращает объект BitmapData, ограниченный 2880 px по ширине и высоте.

captureImage
Этот метод возвращает объект ImageSnapshot. В параметре функции можно передать тип кодировки - PNG или JPEG.

После получения объекта ImageSnapshot мы имеем ByteArray изображения, который потом можно использовать по своему усмотрению.

encodeImageAsBase64
Этот метод получает объект ImageSnapshot и кодирует его в Base 64 строку.

Итак, перепишем наш пример:

private function getBase64String(component:UIComponent):String) {
var snapshot:ImageSnapshot = ImageSnapshot.captureImage(component);
var b64String:String = ImageSnapshot.encodeImageAsBase64(snapshot);
return b64String;
}


или в одну строку:

private function getBase64String(component:UIComponent):String) {
return ImageSnapshot.encodeImageAsBase64(ImageSnapshot.captureImage(component));
}


Обход максимального размера в 2880 px
Для захвата компонентов с большим размером есть метод captureAll, который создает несколько объектов BitmapData и объединяет их в один ByteArray. Но здесь есть ограничение - максимум 256Мб для ByteArray.

Итак, ничего нового, просто все приведено в порядок и собрано в одном месте, что позволяет сэкономить пару-тройку строк кода:)

01:15:00, Flex 2 & Co
Различия между Flex SDK 2.01 и 3
Все различия данных версиях можно наглядно посмотреть здесь. Страница еле грузится, правда.

01:15:00, Flex 2 & Co
Различия между Flex SDK 2.01 и 3
Все различия данных версиях можно наглядно посмотреть здесь. Страница еле грузится, правда.

2007-06-25

10:34:47, Garbage Collector
Как снова подружить Apache Ant и FlashDevelop 3

Наверняка многие читали статью Андрея Горбатова про разработку Flex приложений во FlashDevelop IDE. Одним из ключевых моментов в этой статье было добавление кнопки сборки проекта с использованием Apache Ant на панель инструментов программы. Но с выходом FlashDevelop 3 Beta метод, описываемый в статье, не будет работать. Это связано с тем, что в новой версии программы была убрана поддержка команды ant из плагина RunCommand. Поэтому некоторые разработчики так и сидят во второй версии FlashDevelop, ну а другие запускают Ant через системную консоль, что не очень удобно.

(more…)


10:34:47, Garbage Collector
Как снова подружить Apache Ant и FlashDevelop 3

Наверняка многие читали статью Андрея Горбатова про разработку Flex приложений во FlashDevelop IDE. Одним из ключевых моментов в этой статье было добавление кнопки сборки проекта с использованием Apache Ant на панель инструментов программы. Но с выходом FlashDevelop 3 Beta метод, описываемый в статье, не будет работать. Это связано с тем, что в новой версии программы была убрана поддержка команды ant из плагина RunCommand. Поэтому некоторые разработчики так и сидят во второй версии FlashDevelop, ну а другие запускают Ant через системную консоль, что не очень удобно.

(more…)


2007-06-24

15:34:52, Записки о Flash
ResourceThief

Проект SWFExplorer было решено распилить на две части, одну из которых я вам представляю.
ResourceThief («похититель ресурсов», англ.) — класс, позволяющий вам «добывать» ресурсы, такие как звуки, шрифты и картинки из различных swf-роликов различных версий (начиная с третьей) и использовать эти ресурсы в вашем приложении. Класс не экспортирует stream-звуки. Работа со шрифтами аналогичная FontLoader.

Смотреть в действии.

з.Ы. Насчет второй части проекта пока никаких прогнозов дать не могу, ибо сейчас довольно сильно занят, да и эта часть в большинстве случаев никому не нужна в рантайме. Вполне возможно, что часть, отвечающая за поиск информации о классах будет доступна в виде класса, а часть, отвечающая за декомпиляцию будет представлена в виде AIR-приложения (скорее всего не open-source).


2007-06-22

15:39:45, DL1t's blog
Flash+PDF = Alive PDF

Поддержка просмотра PDF в AIR beta, конечно, радует(хотя список ограничений - не очень).
Но значительно более замечательной возможностью являлась бы генерация PDF - поэтому разработка, появившаяся на bytearray.org, выглядит очень перспективно. Исходники обещаны в ближайшее время, все это обещано быть opensource-ным. Уже поддерживается вставка текста и рисунков, тут это демонстрируется в действии.


15:28:05, DL1t's blog
State of Security

Открылся очень интересный блог, посвященный безопасности Adobe AIR и Adobe Flex, причем AIR в приоритете. Его автор - Лукас Адамски, который занимается в Adobe именно этими вопросами. Пока ни одного поста там нет, но уже появляются комментарии с вопросами, в том числе довольно интересными. Последний вопрос на данный момент касается SoundMixer.computeSpectrum() и BitmapData.draw(), а точнее - причины довольно жестких ограничений в безопастности при их использовании. Вопрос мне тоже крайне интересен, т к ограничения в draw уже 2 раза устраивали мне проблемы на последних этапах разработки проектов, а computeSpectrum я использую в текущих разработках.

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


2007-06-18

21:02:34, Записки о Flash
Обновление FontLoader

Обновился FontLoader. Исправлено пару косяков (правильный поиск тегов), изменена логика работы — теперь регистрация шрифтов производится не FontLoader-ом, а вручную. Экспорт шрифтов запускается также вручную.

Посмотреть.


13:37:56, Лаборатория Январева
Preview: Quick Start + WAP

Сайты на самом последнем Quick Start будут доступны через WAP автоматически!

Предварительные примеры:

Авторские впечатления и технические особенности можно прочитать в полном тексте.

(more…)


08:09:04, DL1t's blog
Технические проблемы

Вчера ночью на хостинге исчезла половина файлов, в том числе блог. Хорошо, база сохранилась. Восстанавливаю….


2007-06-17

20:32:37, DL1t's blog
Flex Future Features: Graphic Tags

Кроме распланированных по стадиям релиза фич, есть вещи, время внедрения которых не определено. Пока их перечислено всего две: графические теги и импорт векторных изображений, на них же построенный. Идея такова: создание в MXML как простых, так и сложных фигур, применение к ним различных типов заливок, фильтров и т п.
То что к этому идет, заметно, не зря же появилось Copy Motion As MXML во Flash.

Радует, что уже существует прототип, но он, к сожалению еще “not ready for Labs”


2007-06-15

12:24:42, Записки о Flash
SWFExplorer

SWFExplorer — инструмент, с помощью которого вы можете загрузить любой swf и использовать из него такие ресурсы как шрифты, изображения и звуки. Для роликов с AS3 с помощью SWFExplorer можно получить подробную информацию о классах, находящихся в данном ролике в удобном XML-формате (напоминает XML, генерируемый утилитой descibeType пакета flash.utils), а именно о классах (в т.ч. internal), константах, методах (принимаемые аргументы, тип выходных данных) и переменных класса. Также в нагрузку декомпиляция классов в исходный код. Функция декомпиляции в данный момент находится в разработке, есть проблемы в декомпиляции e4x-выражений (в реальности они выглядят совсем не так, как пишется в AS, многие безобидные на первый взгляд строки создают очень много кода). Я хочу получить от вас пожелания к данной разработке и что вы хотели бы получить из загруженного swf, а также идеи и дополнительные возможности, которые можно добавить в функционал класса-декомпилятора.

з.Ы.: Сроков выхода пока не сообщаю, потому как в ходе разработки декомпилятора сталкиваюсь с различными трудностями и проблемами, которые с ходу решить не получается. Весь перечисленный функционал, кроме декомпиляции в исходный код, уже полностью реализован.


2007-06-12

09:05:18, Лаборатория Январева
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.

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


07:53:49, Korax Flash
Встречайте Safari для Windows

Как-то “подозрительно” странно, параллельно с бетой Adobe-AIR анонсирован новый браузер для Windows - Safari. Видимо специально, для будующих разработчиков AIR-приложений. Головных болей у ХТМЛ-верстальщиков прибавится, и ведущим сайт-мейкерам надо будет пересмотреть свои взгляды на совместимость браузеров.

Погоняв немного браузер - убедился, что он как и четыре года назад неадекватно отображает сайты, портя даже невинную Гугл-рекламу, а на сайте Адоба не отобразил навигационное меню. После пяти минут работы Safari выдал GP и завершил работу, что поделаешь, всё-таки бета…

Скачать это новое чудо искуззтва можно по ссылке:

http://www.apple.com/safari/

P/S

Мде, видимо я чего-то не понимаю, корпоративные решения Адоба у меня постоянно вызывают недоумения. У меня блуждали мысли, что в конце-концов Адобовцы одумаюся, и вставят в AIR - XulRunner (вместе с JavaScript 1.8-2.0). Но видимо реклама iPod-ов круче, чем технологические возможности Мозиллы. Мои мечты тесно скомбиноровать XUL и SWF (на уровне десктопной аппликухи) - отодвигаются на неопределенное будующее

З.З.Ы.

По словам Джобса, на данный момент Safari является быстрейшим браузером для Windows, затрачивая на отображение веб-страниц в два раза меньше времени чем Internet Explorer 7 и в 1,6 раза меньше чем Firefox 2. Сейчас программа имеет статус бета-версии, скачать ее можно с сайта Apple.

rbc-1.jpg

Имхо, ещё возможности и ресурсы по ускорению отрисовки имеются ;)


2007-06-11

06:58:26, Лаборатория Январева
Apollo Desktop Photos 1.0

Маленький фотобраузер, написанный на Apollo. (Страница проекта, английская) - (Все записи блога про Apollo Desktop Photos)

Скачать Apollo Desktop Photos 1.0 (540 Kb) - Install Apollo Runtime first (6 Mb)

Обновления в версии 1.0

  • Сохраняется последняя посещенная папка
  • Можно использовать Space для последовательного просмотра фотографий в полноэкранном режиме.
  • Сделана подсветка по наведению на фотографию.

Мысли от автора:

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

Некая неторопливость, плавные переходы - они создают новое ощущение от просмотра. Спокойствие, последовательную (а не резкую!) смену ассоциаций.

А раз так, пока есть хоть малая надежда, что изобретено что-то новое - буду по мере сил стараться развивать проект.


2007-06-08

01:41:00, Flex 2 & Co
Flex 3 - баги DeepLinking в Firefox
Тед Патрик обрадовал диплинкингом, который будет встроен в 3 Флексе. (1 и 2) Но, еще работая с SWFAddress, я заметил следующий баг в Firefox'е: если зайти в адресную строку для ручного изменения адреса, а потом перевести фокус обратно на страницу, то адресная строка перестает редактироваться и весь DeepLinking отрубается, до тех пор, пока не перезайти на эту вкладку с другой. Как говорит автор SWFAddress, это баг Firefox и победить его пока не получилось.

01:41:00, Flex 2 & Co
Flex 3 - баги DeepLinking в Firefox
Тед Патрик обрадовал диплинкингом, который будет встроен в 3 Флексе. (1 и 2) Но, еще работая с SWFAddress, я заметил следующий баг в Firefox'е: если зайти в адресную строку для ручного изменения адреса, а потом перевести фокус обратно на страницу, то адресная строка перестает редактироваться и весь DeepLinking отрубается, до тех пор, пока не перезайти на эту вкладку с другой. Как говорит автор SWFAddress, это баг Firefox и победить его пока не получилось.

2007-06-07

20:44:34, Korax Flash
Flex 3:Moxie - НеРеальный Кул

Не удержался, чуть не упал под стуллллл.

Тед Патрик весьма наглядно рассказывает об уменьшении размеров SWF. Это настолько выглядит нереально, что слов нет!!!

Вроде мечты флекс-программеров начинают сбываться (я так понял - недоношенные RSL превращаются в концептуальное подобие DLL) .

http://www.onflex.org/ted/2007/06/flex-3-thursday-dramatically-smaller.php


2007-06-06

09:57:31, Лаборатория Январева
Вышел Quick Start 3.2

После почти двухмесячного перерыва в версиях, выпустил сегодня Quick Start 3.2.

Было время, когда бета-версии выпускались каждую неделю, и все с большими улучшениями, а сейчас - это единственный релиз за прошедшее время, да и то больше с косметическими изменениями. Ну, кроме повышенной интеграции с Xmini (Flash CMS) - благодаря системе кеширования теперь не надо подгружать при каждом посещении сайта сервисы, которые весят, как Flex-приложения 200-300 Kb. Кроме того, подготовка server-side для загрузки файлов через Flex.

Думаю, есть две причины столь большого перерыва:

  1. Quick Start достиг некоторого профессионального уровня, на котором уже не нужно каждую неделю добавлять новые фичи и исправлять баги на уровне ядра. Честно говоря, меня это очень радует, и практика подтверждает данное предположение - сейчас готовятся к выходу еще 2 сайта, и в них все дополнительные возможности шли исключительно на уровне сервисов (модулей), не затрагивая ядро.
  2. В последние два месяца я сильно переключился на client-side программирование: результатом стали такие проекты, как GameMaker2Flex, Apollo Desktop Photos. Создание интерфейсов и архитектур очень затягивает - в прошлом я программировал на Delphi, конечно, с переходом на PHP/MySQL стало чего-то не хватать.

Так что дальнейшее развитие движка пойдет, скорее всего, в сторону интеграции с Xmini и наращивания “мускулов” соответствующих сервисов. Надеюсь, из этого очень скоро получится что-нибудь интересное :)


2007-06-05

09:28:44, Graann's blog
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.

styleName:Object [read-write] - The class style used by this component. This can be a String, CSSStyleDeclaration or an IStyleClient.
Т.е uiTextField.styleName.setStyle("color", 0xff0000); сработает, но только если к UITextField уже был применен какой-то стиль. Не поленилась написать небольшой пример:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx :Application xmlns:mx="http://www.adobe.com/2006/mxml">
  3. <mx :Script>
  4. <![CDATA[
  5. import mx.core.UITextField;
  6. import mx.styles.*;
  7.  
  8. private var uiTextField: UITextField;
  9.  
  10. override protected function createChildren(): void
  11. {
  12.         super.createChildren();
  13.         uiTextField=new UITextField();
  14.         addChild(uiTextField);
  15.         uiTextField.text="mx.core.UITextField";
  16.         trace("uiTextField.styleName: "+uiTextField.styleName);
  17. // uiTextField.styleName: null
  18.         var styleCss:CSSStyleDeclaration = new CSSStyleDeclaration();
  19.         styleCss.setStyle('fontSize', 15);
  20.         styleCss.setStyle('color', picker.selectedColor);
  21.         uiTextField.styleName=styleCss;
  22. }
  23.  
  24. public function changeColor(): void
  25. {
  26.         uiTextField.styleName.setStyle("color", picker.selectedColor);
  27. }
  28.  
  29. ]]>
  30. </mx>
  31. <mx :ColorPicker id="picker" change="changeColor()"/>
  32. </mx></mx>

2007-06-04

23:04:00, Flex 2 & Co
Экспорт изображения без помощи сервера
Почти все браузеры, кроме IE, поддерживают data: URI scheme, то есть для отображения изображения можно в src передавать не ссылку на него, а его код. Например, так выглядит красная точка:

<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />


Правда, отображать таким образом можно относительно небольшие изображения, зато появляется возможность создавать live-скриншоты приложения без помощи сервера.

Хороший пример с исходным кодом есть у Дуга МакКуна.

23:04:00, Flex 2 & Co
Экспорт изображения без помощи сервера
Почти все браузеры, кроме IE, поддерживают data: URI scheme, то есть для отображения изображения можно в src передавать не ссылку на него, а его код. Например, так выглядит красная точка:

<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />


Правда, отображать таким образом можно относительно небольшие изображения, зато появляется возможность создавать live-скриншоты приложения без помощи сервера.

Хороший пример с исходным кодом есть у Дуга МакКуна.

2007-06-02

09:25:36, Лаборатория Январева
Apollo Desktop Photos 0.9

Маленький фотобраузер, написанный на Apollo. (Страница проекта, английская)

Скачать Apollo Desktop Photos 0.9 (540 Kb) - Install Apollo Runtime first (6 Mb)

Вот сама программа:

Использовать очень просто: достаточно найти папку с фотографиями (в формате JPG). По клику на маленькое изображение фотография полностью появляется. По еще одному - исчезает.

(more…)


2007-05-30

12:30:09, Korax Flash
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”, надо сменить гражданство или открыть офшор :) . “Flex Charting” - стратегический продукт СШП, и честнокупленный серийник не должен попасть в руки межународных террористов.


00:19:00, Flex 2 & Co
Подсветка ActionScript 3
Вышла опенсорсная (BSD) библиотека для подсветки AS3 кода. Вот наглядный примерчик. Скачать библиотеку можно отсюда

00:19:00, Flex 2 & Co
Подсветка ActionScript 3
Вышла опенсорсная (BSD) библиотека для подсветки AS3 кода. Вот наглядный примерчик. Скачать библиотеку можно отсюда

Предыдущие 30 | Следующие 30