Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Внешний CSS (http://www.flasher.ru/forum/showthread.php?t=162449)

Jitakuzu 01.08.2011 18:55

Внешний CSS
 
Доброго времени суток

Мне нужно на FLEX'е использовать внешний CSS. Тяжело объяснить это в трех словах, поэтому буду описывать "на пальцах".
CSS можно подгрузить таким образом
Код AS3:

<fx:Style source="SomeCSS.css"/>

Но тогда после каждого внесения изменений в файл SomeCSS нужно будет перекомпилировать приложение.
Чтобы этого избежать, можно подгрузить css с помощью loader'а, пропарсить css и запихнуть его в StyleSheet. Но как тогда присвоить текстовому полю типа UITextField один из стилей, описанных в подгруженном CSS?

CSS выглядит примерно так:
Код AS3:

.text_small{
        font-family: URWClarendonCyrillicBold;
        font-size: 13px;
        textAlign: Left;
}
 
.text_large{
        font-family: URWClarendonCyrillicRegular;
        font-size: 15px;
        textAlign: center;
}

Спасибо за внимание, возможно, и за помощь =))

DaFive 01.08.2011 19:08

Загрузить внешний css-файл.

GBee 01.08.2011 19:10

Можно отдельно скомпилить css и грузить его StyleManager.loadStyleDeclarations(url); тогда по идее компоненты сами обновятся.

Jitakuzu 01.08.2011 19:14

DaFive
Пробовал - не подходит. Гуглом я умею пользоваться ;)
GBee
Спасибо, попробую

Добавлено через 43 минуты
К сожалению, данный вариант не подходит. В таком случае меняем шило на мыло: вместо перекомпиляции основного приложения, нужно будет каждый раз перекомпилировать swf, содержащий css.
В идеале я хочу получить, примерно, следующее:
css содержит три стиля.
Приложение выводит на экран три текстовых поля, текст в которых отображается в одном из трех стилей, подгруженных в css файле.
Меняться настройки стилей должны лишь редактированием файла css. Без перекомпиляции swf приложения.

alatar 01.08.2011 20:06

DaFive, ссылкой промахнулся. http://help.adobe.com/en_US/flex/usi...9084-7f8c.html
Грузить css-файл особого смысла нет, вы сразу потеряете в функционале. Не получится использовать иконки, скины и прочее, что подразумевает встраивание ресурсов. Поэтому, как рекомендует Adobe (и GBee), грузите скомпилированные стили.

etc 01.08.2011 23:28

Цитата:

Сообщение от alatar (Сообщение 1016938)
Не получится использовать иконки, скины и прочее, что подразумевает встраивание ресурсов.

Ну вот, а мы такое ещё три года назад сделали.

alatar 01.08.2011 23:52

Я не говорил, что это невозможно в принципе, но стандартными средствами не получится.

Jitakuzu 03.08.2011 13:49

да мне не надо грузить иконки и прочее. Нужно только безе перекомпиляции менять шрифт и размер в CSS файле

Apikaster 04.08.2011 16:56

Цитата:

Сообщение от etc (Сообщение 1016989)
Ну вот, а мы такое ещё три года назад сделали.

Ну если ВЫ такое еще 3 года назад сделали почему щас парням не помогаешь ?
Или ты на этом форуме просто ответы для себя ищешь ?
По идее надо и с народом делиться знаниями ...
В противном случае нету смысла ... есть ты тут или нет ...!

etc 04.08.2011 17:35

Цитата:

Сообщение от Apikaster (Сообщение 1018003)
Ну если ВЫ такое еще 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-е ...
Если есть идеи, то подскажи ...

alatar 04.08.2011 18:31

Цитата:

Да не надо в Рантайме... Просто должна быть возможность перед работой с программой изменить быстро, например, размер шрифта. Потом запустить swf и увидеть произошедшие изменения
Это и есть "в рантайме".
Либо используйте то, что предлагает Adobe (компилируется только css, основное приложение в перекомпиляции не нуждается), либо используйте сторонние решения (не проверял, работает ли оно с новыми SDK).

P.S. Apikaster, будете хамить, никто вам не поможет. И не флудите в чужих темах.

Jitakuzu 04.08.2011 18:56

я попробовал как описано тут http://livedocs.adobe.com/flex/3/htm...h_Text_15.html

CSS выглядит следующим образом:
Код AS3:

.display_default{
        font-family: CloisterBlack;
        font-size: 20px;
}

в коде пишу:
Код AS3:

textField.text = "<span class='display_default'>" + someTextVar + "</span>";

Размер шрифта меняется удачно, но шрифт не меняется. В чем может быть дело? Сам шрифт заэмбдил:
Код AS3:

[Embed(        source='../assets/CloisterBlack.ttf', 
                fontName='CloisterBlack',
                mimeType='application/x-font',
                embedAsCFF=false
)]
private var font1:Class;


alatar 04.08.2011 19:40

Цитата:

я попробовал как описано тут
Это будет работать только с TextField и к флексу не относится.
Цитата:

В чем может быть дело?
Код AS3:

Font.registerFont(font1);
textField.embedFonts = true;
...


Jitakuzu 05.08.2011 12:46

Я использую UITextField, он же наследуется от TextField.
Шрифт все равно не подключается. Проблема в UITextField?

Ошибку идентифицировал:
Если в СSS написать
Код AS3:

.display_default{
        font-family: Arial;
        font-size: 40px;
        color: #FF;
 
}

то есть, указать стандартный шрифт, то все работает. Шрифт меняется.
Не работает в том случае, когда указывается Embed шрифт.
Как с этим бороться? =)

Добавлено через 2 часа 45 минут
Написал аналогичный код в AS3 проекте, использую TextField. Все работает. По идеи проблема в UITextField...


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

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