пятница, февраля 29, 2008

Улучшаем Flash 9 IDE

Lee Brimelow предлагает вашему вниманию три кастомные панельки для Flash IDE:
  • Event Generator - генератор событий. Необходимо выбрать мувиклип, открыть панель (Window > Other Panels), определить необходимые события, скопировать в буфер и потом вставить готовый код куда нужно. Это значительно облегчает монотонные записи добавления событий.
  • Калькулятор - считаем не выходя из любимой IDE.
  • Панель заметок позволяет легко сохранять интересные куски кода с названиями.
Также автор выложил видео Building Custom Flash Panels о том, как создавать собственные панели.

четверг, февраля 28, 2008

Использование RSL классов фреймворка и кэширование в плеере

Эта статья является вольным и неполным переводом статьи из хелпа по поводу использования RSL и кэширования плеера.

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

Чтобы не внедрять одни и те же классы на этапе компиляции, можно использовать внешние библиотеки классов (Runtime Shared Libraries или RSL) классов flex-фреймворка, то есть подгружать эти классы на этапе загрузки приложения. Существует два вида RSL классов фреймворка – подписанные и неподписанные. Подписанные RSL кэшируются плеером, доступ к ним возможен из любых приложений вне зависимости от доменов. Они не удаляются при очистке кэша браузера. Неподписанные RSL кэшируются браузером и могут использоваться только приложениями, которые имеют доступ к домену RSL.

Flash Player 9.0.115 поддерживает загрузку подписанных RSL классов фреймворка. Эти RSL имеют расширение SWZ, и только Adobe может их создавать. Для плееров версий ниже 9.0.115 будут автоматически загружаться запасные неподписанные RSL, если конечно они были определены при компиляции приложения.

Только приложения, скомпилированные с помощью Flex 3, могут использовать подписанные RSL.

Существующие RSL

Для SDK RSL классов фреймворка находятся в папке flex_sdk_dir/frameworks/rsls, для Flex Builder - flex_builder_dir/sdks/3.0.0/frameworks/rsls. Файлы именуются следующим образом – версия Flex плюс версия сборки компилятора. Следующие RSL классов фреймворка включены в продукты Flex:

  • framework_3.0.build_number.swz (подписанная RSL классов фреймворка)
  • framework_3.0.build_number.swf (неподписанная RSL классов фреймворка)
  • rpc_3.0.build_number.swz (подписанная RSL классов сервисов данных (data services)
  • rpc_3.0.build_number.swf (неподписанная RSL классов сервисов данных)
  • (Только для Flex Builder) datavisualization_3.0.build_number.swz (подписанная RSL классов визуализации данных)
  • (Только для Flex Builder) datavisualization_3.0.build_number.swf (неподписанная RSL классов визуализации данных)

Данные библиотеки уже оптимизированы.

Flex также включает некоторые SWC файлы, которые можно использовать как стандартные или кросс-доменные RSL. Эти библиотеки неоптимизированны и не подписаны. Они находятся в папке frameworks/libs: automation.swc и qtp.swc. Это классы для автоматизированного тестирования приложения.

Кэш плеера

По умолчанию, максимальный размер кэша плеера равен 20MB. После превышения этого размера кэш автоматически очищается от файлов, которые реже всего использовались. Очистка происходит, пока размер кэша не станет меньше 60%, то есть по умолчанию 12MB. С помощью Settings Manager можно регулировать место, отведенное под кэш плеера.

В следующей таблице показаны папки, в которых плеер хранит кэш:

Windows 95/98/ME/2000/XP - C:\Documents and Settings\user_name\Application Data\Adobe\Flash Player\AssetCache\

Windows Vista - C:\Users\user_name\AppData\Roaming\Adobe\Flash Player\AssetCache\

Linux - /home/user_name/.adobe/Flash_Player/AssetCache/

Mac OSX - /Users/user_name/Library/Cache/Adobe/Flash Player/AssetCache/

Использование RSL классов фоеймворка

Использовать RSL классов фреймворка просто:

  1. заходим в свойства проекта;
  2. Flex Build Path -> Library Path
  3. Раскрываем Flex 3 -> framework.swc -> Link type -> Edit
  4. Ставим в выпадающем списке RSL и добавляем (Add) 2 файла – framework_build_number.swz и framework_build_number.swf
  5. Теперь эти два файла сохранятся в вашем проекте

Кстати, размер пустого приложения при использовании внешних библиотек сократился со 150 Кб до 50, правда сама библиотека весит порядка 550Кб, но она сохраняется в кеше и грузится только один раз.

среда, февраля 27, 2008

Проект Open Flash Chart

Наткнулся на интересный проект - Open Flash Chart. Попросту говоря, это приятные на вид flash-графики, которые можно легко вставлять на свои страницы.
Проект в первую очередь разрабатывается для PHP, но есть версии и для Java, Perl, Python, Ruby and Rails и .NET (правда, не факт, что они будут той же версии, что и для PHP). В частности, для Ruby and Rails плагин, которые позволяет в два счета создать нужный график.
Кстати, использовать графики можно абсолютно бесплатно, но помощь приветствуется.

четверг, февраля 14, 2008

E4X запросы с учетом namespace'ов

Допустим у нас есть некий XML (например, rss поток):
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<item>
<title>News feeds from the BBC</title>
<description></description>
<link>http://news.bbc.co.uk/go/rss/-/1/hi/help/rss/3223484.stm</link>
<guid isPermaLink="false">http://news.bbc.co.uk/1/hi/help/rss/3223484.stm</guid>
<pubDate>Mon, 21 Aug 2006 08:34:42 GMT</pubDate>
<category>RSS</category>
<media:group>
<media:category>RSS</media:category>
<media:copyright>(C) British Broadcasting Corporation</media:copyright>
</media:group>
</item>
</channel>
</rss>
Чтобы получить данные тегов из пространства имен media необходимо поступить следующим образом:

1) создать пространство имен
var media:Namespace = new Namespace("http://search.yahoo.com/mrss/");

2) обращаться к необходимым узлам с использованием этого пространства имен
var copyright:String = xml.channel.item.media::group.media::copyright.text();

3) Ответ верный:
(C) British Broadcasting Corporation

пятница, февраля 01, 2008

Ошибка при отсутствии атрибута в XML

Возьмем простой xml типа

<data>
<row owner="Andrey"/>
<row owner="Peter"/>
<row/>
</data>


Нам необходимо получить все записи, у которых owner = "Andrey".
Делаем как всегда:

var res:XML = httpServ.lastResult as XML;
var rows:XMLList = res.row.(@owner=="Andrey");


Вылезает ошибка:

ReferenceError: Error #1065: Variable @owner is not defined.

Чтобы решить эту проблему в лоб, нужно для всех узлов прописать атрибут owner, что не очень хорошо. Поэтому есть альтернативные виды получения этой информации:

1 способ:

var rows:XMLList = res.row.(attribute("owner")=="Andrey");

2 способ:

var xml:XMLList = res.row.(hasOwnProperty("@owner")==true && @owner=="Andrey");

понедельник, января 21, 2008

Новый проект As3Eval

As3Eval - это библиотека, позволяющая динамически компилировать некоторый ecmascript внутри плеера. Она находится сейчас в стадии разработки, поэтому применять ее в реальных проектах врядли получится. Библиотека состоит из портированного es4 "esc" компилятора, доступного из проекта Tamarin.

Демо
В закладке Eval UI можно увидеть сгенерированный байткод. Также можно вставить дамп (hexdump -C) свфки и дизассемблировать его.
Исходный код
SWC

вторник, января 15, 2008

Разновидности Flex-специализаций

Яков Файн обещал флексовый бум в 2008 году. И вот он настал и флекс-программисты сейчас в большом дефиците (имеются ввиду, наверно США). В настоящий момент его команда работает над двумя проектами, суть которых состоит в переносе приложений с Java на Flex. В этих проектах естественно участвуют Flex-разработчики. Поэтому вашему вниманию предлагается их классификация:

1. Разработчики GUI (графического пользовательского интерфейса)
2. Разработчики Flex-компонентов
3. Flex-архитекторы

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

GUI разработчики взаимодействуют с веб-дизайнерами, которые создают шаблоны приложения.

Рассмотрим следующую позицию - разработчики компонентов. Эта каста должна объединять в себе знания предыдущей группы плюс знания в области объектно-ориентированного и событийного (event-driven) программирования. Знания паттернов проектирования также поможет, но здесь будьте осторожны. Особенно, это относится к людям, пришедшим из Java. Не злоупотребляйте паттерном MVC. Шаблон, созданный дизайнером, должен быть разбит на несколько компонентов, взаиммодействующих друг с другом. Поэтому использования паттерна Mediator здесь подойдет лучше (пример).

Также помните, что, хотя ActionScript 3 очень похож на Java, он дает нам динамическое программирование, поэтому нет необходимости создавать тонны строго определенных объектов как в Java.

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

В небольших командах обычно последние две специализации объединены в одном человеке. Если для вашего проекта необходимо создание собственного фреймворка на основе Flex-фреймворка, то вам понадобятся фреймворк-кодеры.

Ну и как в Голливуде:
Если вы хотите изучить Flex, дерзайте и вступайте в растущее Flex-сообщество. Решите, кем вы хотете быть и идите к этой цели. Be what you can be.

Оригинал

пятница, января 11, 2008

Pacifica - VoIP-проект от Adobe

На MAX 2007 Adobe анонсировал новый проект под кодовым названием "Pacifica". Было продемонсрировано простое приложение с использованием высококачественного голосового кодека. Качество было настолько высоким, что некоторые не верили, что это VoIP.

Несколько фактов о Pacifica:
  • Pacifica разработана на основе открытого SIP протокола;
  • Основной целью является поддержка высокого качества звука;
  • Сейчас Pacifica позволяет осуществлять P2P передачу медиа-данных с помощью серверов;
  • Одной из задач является уход от сложных серверных решений, которые необходимы сейчас для VoIP технологий.

Планы по развитию проекта:
  • Поддержка Video over IP;
  • Поддержка AIR приложений;
  • Поддержка стандартных телефонных сетей;
  • Поддержка текстовых сообщений и др.

Участвовать в разработке можно пройдя небольшой опрос.

Официальный сайт проекта

понедельник, декабря 31, 2007

Всех с Новым годом!

Дорогие друзья! Поздравляю всех вас с наступающим праздником, желаю, чтобы все ваши мечты сбылись, планы реализовались, а счастье и удача не покидала вас!

среда, декабря 26, 2007

Tree vertical-scroll баг

Столкнулся с такой проблемой.
При открытии нода дерева с сервера приходят данные об его дочерних элементах, изменяется этот узел датапровайдера, дети отображаются. Все вроде бы ничего, но если по высоте элементы не влезают в дерево, вертикальный скроллинг появляется только после повторного открытия нода (когда он уже знает о своих детях).
Решение - использовать кастомный dataDescriptor. Нашел в блоге Joan Lafferty здесь.

Бажное приложение:
treeScrollAuto.mxml
treeScrollAuto.swf
Решение:
treeScrollAutoFixed.mxml
myDescriptor.as
treeScrollAutoFixed.swf

среда, декабря 05, 2007

Девайс от Nokia с девятым флеш-плеером

На днях мне подсказали, что у Nokia вышла усовершентсвованная версия интернет-планшета N810, подробную спецификацию которого можно посмотреть на странице продукта. Скажу лишь, что там есть мозилла-подобный браузер, поддерживающий вебстандарты и AJAX и Adobe® Flash® 9 плагин с поддержкой потокового видео и аудио. Данный аппарат является последователем N800, который также имеет девятый плеер и, в отличии от новой модели, уже продается в России по цене от 15 до 18 тысяч рублей.

Скринкаст Papevision3D 2.0

Ralph Hauwert разместил у себя скринкаст (8 Мб), в котором показаны основы работы с Papevision3D второй версии на примере создания небольшого приложения с вращающимися сферами(исходники).

пятница, ноября 23, 2007

Онлайн-сервис для трассировки изображений в вектор

VectorMagic - новый сервис, позволяющий загрузить картинку, сконвертировать ее в вектор и сохранить результат в eps, svg или png.

вторник, ноября 13, 2007

Новый Flex - новые чарт-компоненты

Громко сказано, но отчасти правда. Сегодня наткнулся на платный компонент ILOG Elixir, который расширяет возможности и виды существующих чарт-компонентов. В чарт-терминах я особо не разбираюсь, поэтому почитайте про фичи на странице проекта (скажу лишь, что возможно создавать трехмерные графики). Компонент платный, релиз обещают к выходу третьего флекса, текущую бету можно взять здесь. Тем не менее неутомимый Коэнратс уже вовсю делает примеры с исходниками.

четверг, ноября 01, 2007

Flare visualization toolkit

Flare - это коллекция ActionScript 3 классов для создания разнообразных интерактивных визуализаций, например, при создании графиков, сложных анимаций, диаграмм и т.п. Flare основан на prefuse, богатом инструменте для визуализаций, написанном на Java. Flare является опенсорсным (BSD) и может спокойно использоваться для коммерческих целей.
Скачать
Демо
Урок
API докуметация

понедельник, октября 29, 2007

AIR SQLite Admin от Коэнратса

Кристоф Коэнратс обновил свое приложение по администрированию SQLLite. Вы сможете создавать и удалять базы, выполнять различные запросы. Приложение кэширует все запросы в специальном файле sqladmincache.db, использует синхронные операции с БД и schema API для вывода информации о таблицах вашей базы.

Mozilla представляет Prizm - симбиоз веба и десктопа

На днях Mozilla Labs анонсировала новый проект Prizm (бывший WebRunner)


Как говорят разработчики, это не новая платформа, а просто полезное совмещение декстопных приложений, построенный с помощью XUL (XML User Interface Language) и современных веб-технологий. Если вкратце - Prizm позволяет добавлять ваши любимые веб-приложения на десктоп и запускать их оттуда.


Новость интересная. Даже адобы в комментах начали к словам придираться. Пойду качать и разбираться.

UPDATE: Вот более подробная инфа.

вторник, октября 23, 2007

Экспорт из DataGrid в Excel через буфер

Немного переделал функцию по экспорту данных из dataProvider'а DataGrid в Excel. В качестве источника данных выступает ArrayCollection.

private function exportToExcel(dg:DataGrid, fields:Array):void
{
var dp:ArrayCollection = dg.dataProvider as ArrayCollection;
if (dg == null || dp==null || dp.length==0 || fields == null || fields.length==0) {
Alert.show("Ошибка экспорта.");
return;
}
var i:int;
var j:int;
var l_dp:int = dp.length;
var l_f:int = fields.length;
var result:String = "";
for (i=0; i<l_f; i++)
{
result += fields[i][1];
if (i!=(l_f-1)) result+='\t';
}
result +='\r\n';
for (i=0; i<l_dp; i++)
{
for (j=0; j<l_f; j++)
{
var prop:String = fields[j][0];
var l_col:int = dg.columns.length;
var k:int;
for (k=0; k<l_col; k++)
{
if (prop == dg.columns[k].dataField)
{
break;
}
}
var f:Function = dg.columns[k].labelFunction;
if (f != null)
{
result += f(dp[i], dg.columns[k]);
}
else result += dp[i][prop];
if (j!=(l_f-1)) result+='\t';
}
result +='\r\n';
}
System.setClipboard(result);
}

Вызываем так:

exportToExcel(grd,
[['title','Заголовок'], ['rank','Рейтинг'],
['views', 'Просмотров'],['comp', 'Конкурсы'],
['access', 'Доступность'], ['pics','Количество изоб-й']])
,

grd - id нашего DataGrid, а делее идет массив с dataField и заголовками колонок.
При экспорте также учитывается labelFunction. После выполнения функции данные можно смело вставлять в таблицу Excel.

Свежие видео-уроки от GotoAndLearn.com

Я не знаю, в курсе вы или нет, но существует замечательный ресурс GotoAndLearn.com с интересными видео-уроками от Lee Brimelow. На сайте представлено порядка 40 туториалов начиная с 7 версии и до Flash CS3 и AIR приложений. Из свежих:
- Вебкамеры, PNG и AIR
- Использование Document Class
- Drag and Drop в AIR
- Разработка AIR во Flash
- Основы Papervision3D

Все уроки подробные и понятные. Язык не обязателен - каждый шаг показан на видео, вплоть до того, как автор набивает код и исправляет ошибки:)