Форум 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=189889)

firecat 18.12.2012 06:02

Проблема со шрифтами в текстовом поле.
 
Доброго времени суток всем!

Возникла проблема с текстовыми полями. Есть fla, в которой лежат кнопки с текстовыми полями, которым сделан Embed, текст отформатирован по центру. Клиенты хотят, чтобы шрифты лежали во внешней font.swf (не обсуждается...), которую основное приложение читает и использует шрифты из нее. В font.fla для фонта прописан линкейж, когда font.sfw прочитана:
Код AS3:

var buttonLabelFont : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("buttonLabelFont") as Class;
myFont = new buttonLabelFont();
var tFormat : TextFormat = tf.getTextFormat();
tFormat.font = myFont.fontName; 
tf.htmlText = label;
tf.embedFonts = true;
tf.setTextFormat(f);

Если шрифт тот же, что задан для тектового поля, все хорошо. Если другой - текст не отображается. Если поствить
Код AS3:

tf.embedFonts = false

, текст отображается, но не по центру, а по левому краю, хотя align равен 'center'. Дописывание

Код AS3:

Font.registerFont(myFont)

так же не помогает. Подскажите, пожалуйста, что это за беда и как с ней бороться! Заранее огромное спасибо за любую идею или подсказку.

spirit2 18.12.2012 06:19

Код AS3:

var topic:TextField = new TextField();
topic.defaultTextFormat = _formatItem;
topic.embedFonts = true;

Сначала дефолтный, потом песни и пляски.

firecat 18.12.2012 06:34

Цитата:

Сообщение от spirit2 (Сообщение 1110491)
Код AS3:

var topic:TextField = new TextField();
topic.defaultTextFormat = _formatItem;
topic.embedFonts = true;

Сначала дефолтный, потом песни и пляски.

Спасиб.
Может, я уже туплю под утро, но

Код AS3:

tf.defaultTextFormat = new TextFormat();

с последующими песнями и плясками эффекта не принесло :( Поле у меня не создается на лету, а берется из флашки.

zuxul 18.12.2012 11:03

Была антологичная проблема, быстро победить не удалось и чтобы не парить мозг - пересоздавали TextField с копированием всех визуальных параметров и заменой оного. После этого заработало. Возможно, все-таки есть какой-нибудь магический способ применить свой шрифт и нужно его только поискать.

Wolsh 18.12.2012 11:23

Цитата:

var buttonLabelFont : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("buttonLabelFont") as Class;
А Вы трейсили, что в результате получается?
Например, если шрифты добавлялись в либу тегом [Embed], то Вы не давали им имя как классу, а только сохраняли ссылку на класс в переменной. Если "buttonLabelFont" это имя переменной, getDefinition не вернет Вам класс. Сделайте трейс Font.enumerateFonts() в файле со шрифтами, чтобы узнать настоящие имена классов. Далее:
Цитата:

myFont = new buttonLabelFont();
Font.registerFont(myFont)
так же не помогает.
Не надо создавать экземпляр. Регистрировать надо сам класс..
Хелп:
Цитата:

public static function registerFont(font:Class):void

firecat 19.12.2012 17:55

Цитата:

Сообщение от Wolsh (Сообщение 1110535)
А Вы трейсили, что в результате получается?
Например, если шрифты добавлялись в либу тегом [Embed], то Вы не давали им имя как классу, а только сохраняли ссылку на класс в переменной. Если "buttonLabelFont" это имя переменной, getDefinition не вернет Вам класс. Сделайте трейс Font.enumerateFonts() в файле со шрифтами, чтобы узнать настоящие имена классов. Далее:
Не надо создавать экземпляр. Регистрировать надо сам класс..
Хелп:

Шрифт лежит во внешней swf с прописаным линкейжем ("buttonLabelFont"), и если у поля embedFonts = false, текст виден, так что тут все нормально, проблема где-то в другом месте.

С регистрацией да, мой косяк, спасибо за подсказку, но, к сожалению, это тоже не спасло положение.

Вообще странный эффект - с одними шрифтами все ок, и align сохраняется, и отображение, а с другими такая вот фигня. Причем пересозданное поле, как советует zuxul, ведет себя так же


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

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