Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как изменить шрифт стандартной кнопки? (http://www.flasher.ru/forum/showthread.php?t=174673)

uzver3254 30.01.2012 21:24

Как изменить шрифт стандартной кнопки?
 
Уже перерисовал весь скин стандартного button'a и стандартный шрифт на нем совершенно не смотрится.
Шрифт нужен не стандартный и он уже внедрен в библиотеку, но как назначить его на стандартный компонент?
И цвет шрифта тоже надо бы поменять.
метод, который нашел для
Код AS3:

comboBox.setStyle('textFormat', new TextFormat("_sans", 11))

Для кнопки не действует.
Подскажите, плиз.

PainKiller 30.01.2012 21:33

я бы в таком случае нарисовал свою кнопку

uzver3254 30.01.2012 21:38

не катит, т.к. придётся создавать для каждой кнопки отдельный мувиклип(а их много) + в коде прописывать buttonmode для кажого мувиклипа-кнопки.
И самое главное - я уже перерисовал стандартную кнопку - не зря же я это делал!
Понимаю, что правильнее было бы написать свой класс для своей кнопки, но зачем если уже есть стандартный.

Добавлено через 55 минут
на сколько я понял методом тыка ко всем кнопкам проекта нельзя применить единый .setStyle
и каждую надо раскрашивать по имени. Это не удобно жутко, но продолжаю эксперименты и не понимаю, как покрасить её в импортированный шрифт?
имеется
Код AS3:

 
okno.knopka.setStyle("textFormat", new TextFormat( "Monotype_corsiva*", 18, 0xCCCCCC ));

Размер применяется, цвет применяется, а шрифт Monotype_corsiva, который лежит в библиотеке он напрочь не видит и ставит вместо него TimesNewRoman.
Стандартные шрифты типа _typewriter хавает на ура.
Как заставить его видеть импортированный шрифт?

dark256 31.01.2012 00:43

Мне так скромненько кажется, что чем два дня убить на поиск по форуму и обсуждения нюансов удобства и целесообразности использования именно стандартных компонентов, проще уже было 10-ок своих аутентичных компонент вручную слепить ;)

В результате шрифт вы прицепите, но неприятный осадок так и останется :)

uzver3254 31.01.2012 02:33

3ато бесценный экспириенс.
а в обще я не вижу способа к аутентичным компонентам привязать шрифт, кроме этого же .setStyle
т.к. если создавать объект "кнопка", то их придётся создать ровно столько, сколько будет одинаковых кнопок с разными надписями.
А если создавать объект "мувиклип", то в коде придется навешивать на них лэйблы причём на каждый.
Ни тот ни другой вариант не кажутся мне правильными.
dark256, выскажитесь по этому вопросу, пожалуйста. Может я не замечаю чего-то совсем очевидного?

in4core 31.01.2012 04:09

Цитата:

3ато бесценный экспириенс.
Экспиренс у вас начнет появлятся тогда когда вы начнете писать СВОЕ, а работать на чужом

elder_Nosferatu 31.01.2012 15:05

Цитата:

Сообщение от uzver3254 (Сообщение 1060162)
3ато бесценный экспириенс.
а в обще я не вижу способа к аутентичным компонентам привязать шрифт, кроме этого же .setStyle
т.к. если создавать объект "кнопка", то их придётся создать ровно столько, сколько будет одинаковых кнопок с разными надписями.
А если создавать объект "мувиклип", то в коде придется навешивать на них лэйблы причём на каждый.
Ни тот ни другой вариант не кажутся мне правильными.
dark256, выскажитесь по этому вопросу, пожалуйста. Может я не замечаю чего-то совсем очевидного?

А вам не приходило в голову создать свой класс для кнопки; дать возможность своей кнопке получать извне строку, которая и будет лейблом; научить кнопку подстраивать свою ширину под лейбл, если тот не влезает.
Тогда пропадут проблеммиы из создаием множества кнопок с разными именами. Примерно так же ви поступаете со стандартными адобовскими кнопочками, но их описали как класс вместо вас.

uzver3254 31.01.2012 19:22

in4core,
Категорически не согласен. Если Вы не способны учиться на чужом опыте, то я Вам сочувствую.

elder_Nosferatu,
Ещё раз: не важно создаю я свой класс для своего компонента или прикручиваю новый скин к стандартному компоненту на стандартном классе - шрифт будет задаваться строкой
Код AS3:

.setStyle('textFormat', new TextFormat("_sans", 11))

И весь вопрос заключается в том, что системные шрифты типа "_sans" или "Times" он спокойно применяет, но шрифт не стандартный, внедренный в библиотеку, например "Monotype_corsiva" он видеть отказывается и ставит вместо него "Times"

Может кто-нибудь из здешних умов ответить на этот простой, казалось бы вопрос? Не растекаться мыслью по древу на тему на сколько это не нужно и бессмысленно, а просто ответить? Ибо по документации функции TextFormat она должна применять как системные, так и внедренные шрифты.

elder_Nosferatu 31.01.2012 19:41

Есть такой класс fl.core.UIComponent. В нем определен метод setStyle. Кнопка, чей скин вы так старательно перерисовали, хоть и не непосредственный, но все же наследник этого класса. Если вы с нуля создадите свой класс кнопки и не будете наследовать его от UIComponent или его наследников, то метода setStyle у вас просто не будет.
Для своего класса вы будете использовать свой TextField. Не знаю как надежно работает setStyle, но с TextField.defaultTextFormat и TextField.setTextFormat() у меня проблемм небыло если не забывал за`Embed`ить нужный шрифт.

Добавлено через 3 минуты
Точно не скажу, ибо не люблю и не использую Flex`овых компонент, но если я не устанавливал значение true в свойстве TextField.embedFonts, то мой шрифт игнорировался. Может проблемма в этом?

alatar 31.01.2012 20:04

Цитата:

Точно не скажу, ибо не люблю и не использую Flex`овых компонент
Весь пакет fl, к флексу никакого отношения не имеет и никогда не имел.
Цитата:

Шрифт нужен не стандартный и он уже внедрен в библиотеку, но как назначить его на стандартный компонент?
uzver3254, помимо стилей, у вас есть доступ непосредственно к свойству textField вашей кнопки, которое собственно и содержит TextField со всеми вытекающими. Наследуйтесь, выставляйте embedFonts в true и будет вам счастье.


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

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