понедельник, декабря 14, 2009

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.

Есть флекс-приложение, имеющее внутри себя AS3-компонент, использующий fl.controls кнопки и лейблы. При вызове какого-либо поп-апа флекс-приложение начинало неадекватно реагировать на перемещение фокуса по нажатию Tab:

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.core::Container/getChildIndex()
at mx.containers::Panel/getChildIndex()
at fl.managers::FocusManager/::getChildIndex()
at fl.managers::FocusManager/::sortByDepth()
at fl.managers::FocusManager/::sortByTabIndex()
at Array$/Array::_sort()
at Array/http://adobe.com/AS3/2006/builtin::sort()
at fl.managers::FocusManager/::sortFocusableObjectsTabIndex()
at fl.managers::FocusManager/::sortFocusableObjects()
at fl.managers::FocusManager/::keyDownHandler()


Поискав в сети подобную ошибку, наткнулся на несколько постов, в которых во всем винили флешовые компоненты, что и понятно из ссылок на fl.managers::FocusManager. В итоге пришлось переделывать флеш-компонент, подписываясь на Event.ADDED_TO_STAGE его кнопок и выключая в этом событии focusManager - button.focusManager.deactivate().

суббота, февраля 21, 2009

Adobe организует субботник

28 марта Adobe в Сиэтле организует субботник по правке багов во Flex SDK. Приглашаются все желающие. Можно еще участвовать через Connect, ссылку отправят всем зарегистрированным. Будут присутствовать разработчики из Adobe. В общем достаточно любопытное меропрятие.

четверг, февраля 05, 2009

Использование Flex Charting в локализованном приложении

Как известно, флекс-приложения можно локализовывать для разных языков, прописав в параметрах компиляции в атрибуте locale нужную локаль. Но перед этим нужно создать пакет необходимых библиотек для этой локали с помощью команды copylocale (располагается в папке [flexsdk]\bin ):

copylocale en_US ru_RU

Но данная команда игнорирует бандлы для Flex Charting. Это известный баг. И как следствие, наш проект откажется компилироваться для отличной от en_US локали.

Есть несколько способов все исправить.

Первый способ:

1. Найти datavisualization_rb.swc для английской локали:
Например, для Wiwndows:
C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\locale\en_US\

2. Скопировать его в папку с нужной локалью

3. Открыть с помощью архиватора

4. Переименовать папку "\locale\en_US" в "\locale\ru_RU" (или в какую нужно)

5. Отредактировать catalog.xml – заменить все строки en_US на нужную локаль

6. Вызвать во Flex Builder Project -> Clean.

Минус этого метода в том, что для каждой новой локали нужно повторять эту операцию.

Второй способ (типа официальный):

1. Получить исходники Flex Charting. Обычно они распаковываются в папку [flexsdk]\fbpro.

2. Зайти в папку [flexsdk]\frameworks\projects\ и создать тут структуру папок datavisualization\bundles\en_US\src

3. Зайти в папку [flexsdk]\fbpro\projects\datavisualization\bundles\en_US и скопировать все файлы .properties в новоиспеченную папку из п.2

Теперь copylocale будет работать правильно всегда.

Правда, сравнив архивы из первого способа и из второго можно заметить, что во втором бандлов меньше.

понедельник, января 12, 2009

Будем знакомы - Pivot

Pivot - это открытая платформа для разработки RIA на Java. Она сочетает в себе производительность и юзабилити всех современных RIA-фреймворков и мощь Java-платформы.

Как Flex и Silverlight, Pivot обладает свойствами, благодаря которым создавать GUI приложения достаточно легко: декларативный UI, связывание данных, различные эффекты, интеграцию с веб-сервисами и т.п.

Страница проекта
Демки
Загрузки
Уроки
Более подробный обзор.
Использование JavaScript внутри Pivot