Это можно сделать, выставив галочку у файла 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.