Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.12.2012, 06:02
firecat вне форума Посмотреть профиль Отправить личное сообщение для firecat Найти все сообщения от firecat
  № 1  
Ответить с цитированием
firecat

Регистрация: May 2008
Сообщений: 15
По умолчанию Проблема со шрифтами в текстовом поле.

Доброго времени суток всем!

Возникла проблема с текстовыми полями. Есть 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)
так же не помогает. Подскажите, пожалуйста, что это за беда и как с ней бороться! Заранее огромное спасибо за любую идею или подсказку.

Старый 18.12.2012, 06:19
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 2  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Код AS3:
var topic:TextField = new TextField();
topic.defaultTextFormat = _formatItem;
topic.embedFonts = true;
Сначала дефолтный, потом песни и пляски.

Старый 18.12.2012, 06:34
firecat вне форума Посмотреть профиль Отправить личное сообщение для firecat Найти все сообщения от firecat
  № 3  
Ответить с цитированием
firecat

Регистрация: May 2008
Сообщений: 15
Цитата:
Сообщение от spirit2 Посмотреть сообщение
Код AS3:
var topic:TextField = new TextField();
topic.defaultTextFormat = _formatItem;
topic.embedFonts = true;
Сначала дефолтный, потом песни и пляски.
Спасиб.
Может, я уже туплю под утро, но

Код AS3:
tf.defaultTextFormat = new TextFormat();
с последующими песнями и плясками эффекта не принесло Поле у меня не создается на лету, а берется из флашки.

Старый 18.12.2012, 11:03
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 4  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Была антологичная проблема, быстро победить не удалось и чтобы не парить мозг - пересоздавали TextField с копированием всех визуальных параметров и заменой оного. После этого заработало. Возможно, все-таки есть какой-нибудь магический способ применить свой шрифт и нужно его только поискать.

Старый 18.12.2012, 11:23
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
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
__________________
Reality.getBounds(this);

Старый 19.12.2012, 17:55
firecat вне форума Посмотреть профиль Отправить личное сообщение для firecat Найти все сообщения от firecat
  № 6  
Ответить с цитированием
firecat

Регистрация: May 2008
Сообщений: 15
Цитата:
Сообщение от Wolsh Посмотреть сообщение
А Вы трейсили, что в результате получается?
Например, если шрифты добавлялись в либу тегом [Embed], то Вы не давали им имя как классу, а только сохраняли ссылку на класс в переменной. Если "buttonLabelFont" это имя переменной, getDefinition не вернет Вам класс. Сделайте трейс Font.enumerateFonts() в файле со шрифтами, чтобы узнать настоящие имена классов. Далее:
Не надо создавать экземпляр. Регистрировать надо сам класс..
Хелп:
Шрифт лежит во внешней swf с прописаным линкейжем ("buttonLabelFont"), и если у поля embedFonts = false, текст виден, так что тут все нормально, проблема где-то в другом месте.

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

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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