Есть ли способ добавить гибкий скин программно в ActionScript? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть различные компоненты, которые обрабатываются через программный скин. Класс skin ссылается на одноэлементный класс, который содержит различные цвета для применения к различным аспектам компонента. Класс синглтона имеет цвета по умолчанию, настроенные на вариации черного / серого и т. Д. Я загружаю пользовательские цвета из файла XML, который затем загружается в синглтон. Я применяю пользовательский скин через таблицу стилей CSS, которая включена в основной mxml приложения.

Проблема заключается в том, что при начальной загрузке SWF компоненты, отображаемые на экране, являются черными и не отражают изменения цвета, загруженные из файла XML. У меня есть несколько выпадающих окон, которые отображаются при нажатии кнопок, и эти выпадающие списки отражают правильные цвета из файла XML. Таким образом, система работает правильно, но начальное рисование компонентов, очевидно, происходит до того, как XML загружен и применен к одиночному.

У меня вопрос: есть ли способ применить скин к элементу программно, вызвав конструктор?

У меня есть это в моем файле CSS:

.PanControlsBackground {
    borderSkin:ClassReference('skins.buttons.PanControlsBackground');
}

и я применяю класс с этим:

_app.panControls.styleName = "PanControlsBackground";

Есть ли способ позвонить:

_app.panControls.styleName = new PanControlsBackground();

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

1 Ответ

1 голос
/ 03 сентября 2011

Вы можете использовать styleManager для управления стилем во время выполнения. Например,

.PanControlsBackground {
  /* leave it blank */
}

А затем в каком-то блоке скрипта:

styleManager.getStyleDeclaration(".PanControlsBackground").setStyle("borderSkin", skins.buttons.PanControlsBackground);

Итак, это один из способов изменения скина программным способом.

Однако я не знаю много о том, как сборка мусора обрабатывается в старых оболочках. Например, как GC будет отличаться в этом методе переключения скина от простого набора классов CSS для каждой из ваших скинов и переключения между ними? Я не могу ответить на этот вопрос.

Я думаю, что можно, по крайней мере, сказать, что вышеупомянутый метод будет гарантировать, что по умолчанию (или другой минимальный скин, который вы можете создать) будет использоваться первым, и можно было бы контролировать, когда в процессе инициализации будет создан другой скин get.

...