Просмотр полной версии : Внешний CSS
Jitakuzu
01.08.2011, 18:55
Доброго времени суток
Мне нужно на FLEX'е использовать внешний CSS. Тяжело объяснить это в трех словах, поэтому буду описывать "на пальцах".
CSS можно подгрузить таким образом
<fx:Style source="SomeCSS.css"/>
Но тогда после каждого внесения изменений в файл SomeCSS нужно будет перекомпилировать приложение.
Чтобы этого избежать, можно подгрузить css с помощью loader'а, пропарсить css и запихнуть его в StyleSheet. Но как тогда присвоить текстовому полю типа UITextField один из стилей, описанных в подгруженном CSS?
CSS выглядит примерно так:
.text_small{
font-family: URWClarendonCyrillicBold;
font-size: 13px;
textAlign: Left;
}
.text_large{
font-family: URWClarendonCyrillicRegular;
font-size: 15px;
textAlign: center;
}
Спасибо за внимание, возможно, и за помощь =))
Загрузить внешний css-файл. (http://livedocs.adobe.com/flex/3/html/help.html?content=Working_with_Text_15.html)
Можно отдельно скомпилить css и грузить его StyleManager.loadStyleDeclarations(url); тогда по идее компоненты сами обновятся.
Jitakuzu
01.08.2011, 19:14
DaFive
Пробовал - не подходит. Гуглом я умею пользоваться ;)
GBee
Спасибо, попробую
Добавлено через 43 минуты
К сожалению, данный вариант не подходит. В таком случае меняем шило на мыло: вместо перекомпиляции основного приложения, нужно будет каждый раз перекомпилировать swf, содержащий css.
В идеале я хочу получить, примерно, следующее:
css содержит три стиля.
Приложение выводит на экран три текстовых поля, текст в которых отображается в одном из трех стилей, подгруженных в css файле.
Меняться настройки стилей должны лишь редактированием файла css. Без перекомпиляции swf приложения.
DaFive, ссылкой промахнулся. http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f8c.html
Грузить css-файл особого смысла нет, вы сразу потеряете в функционале. Не получится использовать иконки, скины и прочее, что подразумевает встраивание ресурсов. Поэтому, как рекомендует Adobe (и GBee), грузите скомпилированные стили.
Не получится использовать иконки, скины и прочее, что подразумевает встраивание ресурсов.
Ну вот, а мы такое ещё три года назад сделали.
Я не говорил, что это невозможно в принципе, но стандартными средствами не получится.
Jitakuzu
03.08.2011, 13:49
да мне не надо грузить иконки и прочее. Нужно только безе перекомпиляции менять шрифт и размер в CSS файле
Apikaster
04.08.2011, 16:56
Ну вот, а мы такое ещё три года назад сделали.
Ну если ВЫ такое еще 3 года назад сделали почему щас парням не помогаешь ?
Или ты на этом форуме просто ответы для себя ищешь ?
По идее надо и с народом делиться знаниями ...
В противном случае нету смысла ... есть ты тут или нет ...!
Ну если ВЫ такое еще 3 года назад сделали почему щас парням не помогаешь ?
Или ты на этом форуме просто ответы для себя ищешь ?
По идее надо и с народом делиться знаниями ...
В противном случае нету смысла ... есть ты тут или нет ...!
Не надо мне такими большими буквами «выкать». То, что мы такой функционал сделали ещё три года назад, к флексу отношения не имеет, он тогда даже скомпилированные стили не умел загружать, не то чтобы в рантайме парсингом заниматься.
Jitakuzu
04.08.2011, 17:52
Да не надо в Рантайме... Просто должна быть возможность перед работой с программой изменить быстро, например, размер шрифта. Потом запустить swf и увидеть произошедшие изменения.
Нужно просто приложение, которое вывод на экран "Hello, World!". Но шрифт, размер, болд, Италик, Центрирование и прочие пареметры нужно задавать без перекомпиляции, изменяя лишь CSS файл в текстовом редакторе.
Apikaster
04.08.2011, 17:56
Я вот все ровно думаю что там разные режимы есть ...
Добавлено через 9 минут
etc ...
если ты такой гуру флекса, то ответь на этот вопрос ...
http://www.flasher.ru/forum/showthread.php?t=162858
Вот тебе пища для мозга ...
Я не могу такого сделать, по скольку не силен во FLEX-е ...
Если есть идеи, то подскажи ...
Да не надо в Рантайме... Просто должна быть возможность перед работой с программой изменить быстро, например, размер шрифта. Потом запустить swf и увидеть произошедшие изменения
Это и есть "в рантайме".
Либо используйте то, что предлагает Adobe (компилируется только css, основное приложение в перекомпиляции не нуждается), либо используйте сторонние решения (http://www.rubenswieringa.com/blog/cssloader) (не проверял, работает ли оно с новыми SDK).
P.S. Apikaster, будете хамить, никто вам не поможет. И не флудите в чужих темах.
Jitakuzu
04.08.2011, 18:56
я попробовал как описано тут http://livedocs.adobe.com/flex/3/html/help.html?content=Working_with_Text_15.html
CSS выглядит следующим образом:
.display_default{
font-family: CloisterBlack;
font-size: 20px;
}
в коде пишу:
textField.text = "<span class='display_default'>" + someTextVar + "</span>";
Размер шрифта меняется удачно, но шрифт не меняется. В чем может быть дело? Сам шрифт заэмбдил:
[Embed( source='../assets/CloisterBlack.ttf',
fontName='CloisterBlack',
mimeType='application/x-font',
embedAsCFF=false
)]
private var font1:Class;
я попробовал как описано тут
Это будет работать только с TextField и к флексу не относится.
В чем может быть дело?
Font.registerFont(font1);
textField.embedFonts = true;
...
Jitakuzu
05.08.2011, 12:46
Я использую UITextField, он же наследуется от TextField.
Шрифт все равно не подключается. Проблема в UITextField?
Ошибку идентифицировал:
Если в СSS написать
.display_default{
font-family: Arial;
font-size: 40px;
color: #FF;
}
то есть, указать стандартный шрифт, то все работает. Шрифт меняется.
Не работает в том случае, когда указывается Embed шрифт.
Как с этим бороться? =)
Добавлено через 2 часа 45 минут
Написал аналогичный код в AS3 проекте, использую TextField. Все работает. По идеи проблема в UITextField...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.