Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Возможна ли динамическая подгрузка скинов? (http://www.flasher.ru/forum/showthread.php?t=189573)

Фломастер 14.12.2012 16:08

Возможна ли динамическая подгрузка скинов?
 
Могу ли сделать несколько скинов для компонента, скомпилировать каждый в отдельный swf или swc и подгружать в основное приложение только по необходимости?

spirit2 14.12.2012 17:19

Можете.

Фломастер 14.12.2012 18:06

Дайте, плз, ссылок почитать. Я нашёл информацию только для flex 2.

Добавлено через 3 минуты
А мне нужно для flex 4. И подгружать мне нужно скины для моих собственных компонентов на основе SkinnableComponent

Stone 14.12.2012 18:40

Код:

.setStyle("skinClass", Skin)

alatar 14.12.2012 18:52

http://help.adobe.com/ru_RU/flex/usi...9084-7f8c.html

Stone 14.12.2012 19:13

у меня дэбаг плеер на эти примеры ругается. 4-й с css как то плохо дружит.

alatar 14.12.2012 19:52

Без подробностей могу только посочувствовать.

Фломастер 14.12.2012 20:15

http://help.adobe.com/ru_RU/flex/usi...9084-7f8c.html
Я вот тоже нашёл эту статью, пробую.

Как я понимаю, все мои скины и css можно вынести в отдельно скомпилированный swf, верно? Для этого мне нужно создать swc-библиотеку с моими скинами. И такой командой всё собрать: $ mxmlc -include-libraries=halo.swc halo.css
Я правильно понимаю?

alatar 14.12.2012 23:21

Нет для этого достаточно скомпилировать css и загрузить полученный swf с помощью styleManager.loadStyleDeclarations().

Фломастер 15.12.2012 00:48

Это можно сделать, выставив галочку у файла css "скомпилировать css в swf"? И в какой именно swf скомпилируется? В основной файл приложения?

И такую странность заметил: мой css не хочет компилится, если в нём есть кастомные компоненты.

Код:

.playButton
{
        skinClass                : ClassReference('components.skins.GraphicButtonSkin');
        outBack                : ClassReference('assets.fxg.buttons.PlayButton');
        overBack                : ClassReference('assets.fxg.buttons.PlayButtonOver');
}

Например, этот кусок кожа даёт ошибки на каждую строчку. GraphicButtonSkin - мой собственный скин для кнопки, а PlayButton и PlayButtonOver - графика в формате fxg.

Css нормально компилируется только в простейшем виде, когда в нём лишь описание для текстовых компонент идёт. Например такой код css не даёт ошибок:
Код:

.adLink
{
        fontFamily : Tahoma;
        color      : #3b8cd7;
        fontSize  : 12;
        fontWeight : bold;
}

Добавлено через 4 минуты
А, ну похоже, что любое приведение к ClassReference даёт ошибку при компиляции..

Добавлено через 15 часов 5 минут
Или, позвольте, более обще опишу свою задачу.

У меня есть видеоплеер со моими самописными компонентами, самописными скинами и всё это собрано в css.
Для этого плеера мне нужно будет сделать несколько вариантов оформления. Но варианты оформления нужно хранить в отдельном месте и грузить только во время выполнения плеера. По запросу.

Технически, я понимаю, что каждую тему со своим css и скинами нужно скомпилировать в отдельный swf и его грузить с помощью styleManager.loadStyleDeclarations().

Но вопрос такой: как мне организовать всё это инфраструктурно в проекте flash builder?

Добавлено через 15 часов 16 минут
То есть, я предполагаю так:
У меня есть основной проект с плеером, в нём в разных пакетах все темы оформления. Сами темы оформления исключаем для компиляции.

Для каждой темы оформления отдельный проект библиотеки swc, куда код берётся из соответствующего пакета в основном проекте. Готовая библиотека swc компилируется через командую строку со своим css такой командой:
Код:

$ mxmlc -include-libraries=halo.swc halo.css
На выходе получается несколько swf с темами, нужная грузится в плеер по надобности.

В этой схеме я не знаю, как исключить ненужные пакеты со скинами из основного проекта плеера (или как их разрабатывать отдельно, не копируя для каждой темы код плеера). Как компилировать css в swf средствами flash builder, а не через командную строку. и как скомпилировать сложный css? в котором есть приведение к классу с помощью ClassReference (у меня в этих строках компилятор даёт ошибку).

Добавлено через 20 часов 17 минут
Всё, я разобрался, всем спасибо.

Я сделал все скины в одном проекте. Каждому набору скинов соответствует своя css. У каждой css выставил галочку "компилировать css в swf". Каждая библиотека компилируется в отдельный swf с тем же именем, что и css и по тому же относительному пути, по которому css лежит в проекте, но в папке bin-debug или bin-release. В этом swf автоматически собираются все классы скинов, которые нужны для этой темы (есть ссылки в css на эти классы).

Скины, которые не задействованы в текущей теме не собираются в основной swf приложения, то есть на размер не влияют.

Ошибку с ClassReference в css решил переносом css в корень проекта. Оказалось, что это давнишний баг flash builder.


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

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