Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Flex проектирование Темы (http://www.flasher.ru/forum/showthread.php?t=141069)

inozemcev 15.06.2010 16:31

Flex проектирование Темы
 
Дано приложение, которое реализовывает GUI интерфейс через css стили, которые грузят ресурсы на этапе компиляции тегом embed

цель сделать возможным поддержку некой темы. Тема подгружает свой набор стилей и компонентов на этапе исполнения и все компоненты описывают свой внешний вид на основании стилей и рендереров описанных в Теме.

Можете дать какой нибудь совет, как это лучше сделать ?!

В частности как динамически создавать css стили для компонентов.
(я конечно буду пользоваться google но мне кажется тема достойна публичного обсуждения)

Хемуль 15.06.2010 16:34

Может быть это?

inozemcev 15.06.2010 17:28

Первая попытка добится каких то результатов привела к warning-у

Код AS3:

private function createStyle () :void {
        var windowBorderSD:CSSStyleDeclaration = new CSSStyleDeclaration ();
        windowBorderSD.defaultFactory = function () :void {
                left = 5;
                right = 15;
                top = 10;
                bottom = 8;
        }
        StyleManager.setStyleDeclaration (".windowBorder", windowBorderSD, true);       
}
 
// далее где то в функции которая вызывается после creationComplete
createStyle();
var windowBorder:Canvas = new Canvas ();
windowBorder.styleName = StyleManager.getStyleDeclaration(".windowBorder");

Компилятор выдает следующее:


Warning: 'setStyleDeclaration' has been deprecated since 4.0. Please use 'IStyleManager2.setStyleDeclaration on a style manager instance'.

Как использовать этот интерфейс непонятно класса StyleManager2 не существует
возможно код будет работать c flex_sdk_3 но приложение компилится на 4

Хемуль 15.06.2010 17:52

IStyleManager2 - это интерфейс, который имплементируется классом StyleManager, как я понимаю.
Вам же так и написали, мол, используйте метод IStyleManager2.setStyleDeclaration для экземпляра style manager'а.
То есть, получаете этот самый экземпляр и вызываете его метод. Думаю, в сети есть примеры того, как это делается.

inozemcev 15.06.2010 19:51

Интерфейс не умеет по определению ничего делать. Скорее всего речь идет о том, что метод setStyleDeclaration должен выполнять класс или экземпляр класса реализующий этот интерфейс.

Правда я сам допустил неточность вместо
var windowBorderSD:CSSStyleDeclaration = new CSSStyleDeclaration ();
должно быть
var windowBorderSD:CSSStyleDeclaration = new CSSStyleDeclaration (someName);
где someName какой нибудь string

О результатах чуть позже доложу

Хемуль 15.06.2010 20:11

Цитата:

Сообщение от inozemcev (Сообщение 915604)
Скорее всего речь идет о том, что метод setStyleDeclaration должен выполнять класс или экземпляр класса реализующий этот интерфейс.

Ну так вам же так и написали ^_^ :
Цитата:

Please use 'IStyleManager2.setStyleDeclaration on a style manager instance

inozemcev 16.06.2010 17:52

Что это за класс то ? Пользовательский какой - то. Нужно писать свой собственный syleManager ?

Добавлено через 9 минут
Код AS3:

//Flex 3 code
StyleManager.getStyleDeclaration("someStyle");
//Flex 4 code
FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration("someStyle")


Хемуль 16.06.2010 18:07

2 inozemcev:
Google + документация рулят. ^_^

inozemcev 16.06.2010 19:39

Информации очень мало по этой теме. В поисковике эта ветка на тему IStyleManager2 уже на 3 или четвертом месте из 6 - 7 возможных.

Хемуль 16.06.2010 20:12

2 inozemcev:
Да вы по StyleManager ищите, а не по IStyleManager2.


Часовой пояс GMT +4, время: 18:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.