Динамический выбор файла CSS, нажав на кнопку в FLEX 3 - PullRequest
1 голос
/ 19 декабря 2011

Мне нужно создать приложение, в котором мы меняем стиль приложения, которое является темой приложения, на основе нажатия кнопки.

Я скачал тему, которая содержит разные CSS-файлы.Мне нужно динамически объявить CSS для приложения, чтобы применить эту тему.

enter image description here

У меня есть имя файла Theme1.css, Theme2.css, Theme3.css, Theme4.css,Theme5.css.

когда я нажимаю кнопку «Тема 1», мне нужно применить файл Theme1.css в качестве источника стиля.Примерно так же, когда я нажимаю кнопку «Тема 2», мне нужно применить файл Theme2.css в качестве источника стиля.

Примечание. Файл CSS содержит стиль как для приложения, так и для компонента приложения.

Хорошего дня ....

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Вы должны использовать средство в eclipse / flex builder для компиляции CSS в SWF, чтобы стили могли быть изменены во время выполнения.

Вы также должны поддерживать переменную экземпляра текущего идентификатора темы.

Это то, что вы ищете?

public function switchTheme(theme:int):void {
    StyleManager.unloadStyleDeclarations("assets/styles/Theme"+currentTheme+".swf");
    StyleManager.loadStyleDeclarations("assets/styles/Theme"+theme+".swf");
    this.currentTheme = theme;
}

Затем вы должны назначить обработчики щелчков для каждой кнопки функции switchTheme - передавая идентификатор темы в качестве параметра.

1 голос
/ 28 декабря 2011

Вам необходимо скомпилировать ваши CSS-файлы как SWF. Вы можете щелкнуть правой кнопкой мыши CSS-файлы в окне проводника Flash Builder и выбрать в меню «Компилировать CSS в SWF».

Затем вы используете метод loadStyleDeclarations() из StyleManager для загрузки SWF-файла с вашей информацией CSS.

Предыдущий шаг только добавит новые стили в вашу подсистему стилей. Если вы хотите очистить старые стили, вам сначала нужно использовать метод unloadStyleDeclarations().

Если вы выгружаете текущие активные объявления CSS, используйте false в качестве второго параметра, поэтому StyleManager не делает недействительными стили и перестраивает цепочки / кэш объявлений стилей для компонентов на сцене. Это не только медленно, но и приводит к обновлению экрана со стилями по умолчанию перед применением новых стилей.

У вас может быть что-то похожее на это, и вы можете вызывать applyTheme('url/to/theme.swf') с соответствующим URL-адресом всякий раз, когда вы хотите изменить тему:

private var currentThemeURL:String = 'themes/default.swf';

public function applyTheme(themeURL:String):void
{
    StyleManager.unloadStyleDeclarations(currentThemeURL, false);

    StyleManager.loadStyleDeclarations(themeURL);
    currentTheme = themeURL;
}
1 голос
/ 19 декабря 2011

Я думаю, вы должны зациклить все элементы управления один за другим и установить тему на элементе управления. Например, Если вы установите КРАСНУЮ тему по умолчанию, а кнопка будет красной, тогда вы поменяете тему на Синий, а затем установите цвет кнопки на синий, используя цикл управления. Может быть, это поможет вам ....

Пожалуйста, спросите меня, не понимаете ли вы, что я говорю ...

Спасибо.

...