Бесплатно скачать Adobe Flash Player

Создание кастомного Design-time View для своего Flex 3 компонента

Команда AnyChart.Com Team продолжает радовать. На этот раз они раскопали, как создать кастомный design-time preview для своих Flex компонентов. Привожу русскоязычный вариант статьи (оригинал тут) от авторов:

Иногда необходимо сделать кастомный Design-time Preview для компонента (это его вид в "Design View" Flex Builder-а). Для этих целей в Adobe Flex 3 SDK есть недокументированый класс mx.core.UIComponentGlobals. В этом волшебном классе лежит не менее волшебное поле designMode:Boolean.

В Design View среда Flex Builder пытается "выполнить" код и отобразить что-либо, следовательно можно прописать проверку на designMode и делать то, что хотим.

Итак:
1. Возьмем ActionScript-компонент для Flex Bulder 3.
2. Заоверрайдим метод createChildren():

override protected function createChildren():void {
super.createChildren();
if (UIComponentGlobals.designMode) {
//здесь мы создаем child-ы, которые будут в design mode
}
}

3. Заоверрайдим метод updateDisplayList():
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);

if (UIComponentGlobals.designMode) {
//здесь мы рисуем то, что будет видно в design mode
}else {
//а здесь то, что в runtime
}
}

Вуаля! Пример компонента можно взять здесь. При добавлении этого компонента на сцену в Design Mode Flex Builder-а мы увидим следующее:


А при запуске — вот это:

Можно скачать пример Flex-приложения и пример компонента.

Писал: Rost, 24 Март 2008 20:06

Комментарии:

Как могло получиться, что столь полезный класс остался недокументированным?
На сколько мне известно, сейчас у Flex только один плюс перед .NET - возможность наследования ресурсов подобно Delphi. Ввиду такого положения вещей, не делать упор на это вроде бы не очень логично?

Как можно откопать недокументированные классы?

Алексей - 25 Март 2008 7:01

>>Как могло получиться, что столь полезный класс остался недокументированным?
Эт к адобу. Или на opensource.adobe.com. Помоему там можно документировать все.

>>Как можно откопать недокументированные классы?
Копая исходники фреймворка ;-)

Alex Batsuev - 25 Март 2008 10:58

Во Flash CS3, если кому интересно, тоже самое делается через проверку условия:
if ((parent != null && getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")) {}

Подозреваю, во Flex тоже можно так сделать, только, наверное, класс будет другой.

Dendroid - 25 Март 2008 19:49

обязательно ли из компонента компилировать SWC?
Если нет то у меня не работает для SDK 3.0

- 30 Апрель 2008 17:51



Подписаться на новости (RSS)




Примечания:
Статус документа
: в процессе
   2002-2009 Производство: Ростислав Сирык · О проекте · Подписка на новости (RSS)