Показать сообщение отдельно
Старый 15.12.2012, 00:48
Фломастер вне форума Посмотреть профиль Отправить личное сообщение для Фломастер Найти все сообщения от Фломастер
  № 10  
Ответить с цитированием
Фломастер

Регистрация: Jun 2005
Сообщений: 104
Это можно сделать, выставив галочку у файла 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.