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

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

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

Регистрация: Nov 2005
Сообщений: 148
По умолчанию TLF - defaultTextFormat не меняет шрифт

Не могу поменять шрифт, уже написал кусочек кода совсем простой и всё равно:
Код AS3:
import flash.display.*;
import flash.events.MouseEvent;
import fl.text.TLFTextField;
import flash.text.TextFormat;
 
mc.addEventListener(MouseEvent.CLICK, onCLICK);
function onCLICK(e:MouseEvent):void
{
	trace("Замена шрифта");
	var TLFformat:TextFormat=new TextFormat("SegoeWP", 90, 0x666666);
	txt.text="Новый текст";
	txt.defaultTextFormat=TLFformat;			
}
На сцене клип: mc и текст TLF: txt шрифтом Taurus. Внедрён шрифт "Segoe WP" с именем "SegoeWP"
[IMG]http://s3.********************/uploads/images/2012/08/2a96cd3cc543ac174bbf4d715670d4a1.jpg[/IMG]
Не меняется шрифт, точнее шрифт ставится на какой-то по умолчанию (видимо). И ошибки не выдаёт.
Сделал без классов, чтоб проще и нагляднее, но в классах та же беда.
Что не так?

У буржуев всё просто на форумах описывается:
Код AS3:
// WORKS
var fmt:TextFormat = new TextFormat("Arial", 24, 0xFF0000);
myField.text = "whatever"; // set content first
myField.setTextFormat(fmt); // format what's there now


Последний раз редактировалось zerAlex2; 11.08.2012 в 22:06.
Старый 11.08.2012, 21:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
txt.text="Новый текст";
txt.defaultTextFormat=TLFformat;

Что не так?
Код AS3:
txt.defaultTextFormat=TLFformat;
txt.text="Новый текст";
__________________
Reality.getBounds(this);

Старый 11.08.2012, 22:46
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 3  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
Не, результат тот же. И буржуины рекомендуют применять формат после:
http://flash.xgraves.com/?tag=defaulttextformat

Подозреваю, что как-то нужно внедрять шрифт по другому.

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


Последний раз редактировалось zerAlex2; 11.08.2012 в 23:39.
Старый 11.08.2012, 23:30
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
И буржуины рекомендуют применять формат после:
Вы сами-то прочитали?
Вы не видите разницы между setTextFormat() и defaultTextFormat?
Давайте ка еще раз прочитаем. Обратите внимание на порядок в двух последних блоках "работает!"

4. Pitfall: setTextFormat is not defaultTextFormat

textField.setTextFormat will format your text field, but the formatting will disappear if you reset the textField.text.
So use textField.defaultTextFormat to set the base style for all future content.

Examples:

Код AS3:
// DOES NOT WORK!
var fmt:TextFormat = new TextFormat("Arial", 24, 0x666666);
myField.setTextFormat(fmt); // format what's there now
myField.text = "whatever"; // resetting content loses format
 
// WORKS
var fmt:TextFormat = new TextFormat("Arial", 24, 0x666666);
myField.text = "whatever"; // set content first
myField.setTextFormat(fmt); // format what's there now
 
// WORKS
var fmt:TextFormat = new TextFormat("Arial", 24, 0x666666);
myField.defaultTextFormat = fmt; // note the syntax is different
myField.text = "whatever"; // works
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 11.08.2012 в 23:45.
Старый 11.08.2012, 23:42
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 5  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
Я уже и так и сяк пробовал:
Код AS3:
txt.setTextFormat(TLFformat);
и так:
Код AS3:
var fd1:FontDescription = new FontDescription(); 
fd1.fontLookup = FontLookup.EMBEDDED_CFF; 
fd1.fontName = "SegoeWP";
можно даже:
Код AS3:
function onCLICK(e:MouseEvent):void
{
 
	var TLFformat:TextFormat=new TextFormat();
	TLFformat.color=0xFF0000;
	TLFformat.font="SegoeWP";
	TLFformat.size=32;
	trace("Замена шрифта");
	txt.defaultTextFormat=TLFformat;
	txt.setTextFormat(TLFformat);
	txt.text="Новый текст";
	txt.defaultTextFormat=TLFformat;
	txt.setTextFormat(TLFformat);			
}
не работает. Явно с внедрением шрифтов заковыка.


Последний раз редактировалось zerAlex2; 12.08.2012 в 00:16.
Старый 12.08.2012, 00:01
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
ОК. У Вас вообще внедренный шрифт для поля включен? Попробуйте включить программно:
Код AS3:
txt.embedFonts = true;
txt.defaultTextFormat=TLFformat;
txt.text="Новый текст";
__________________
Reality.getBounds(this);

Старый 12.08.2012, 00:06
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 7  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
Добавил строку, результат тот же (
ссылка на проект (CS6):
http://**************/32079225

Вот, смотрю, у людей всё просто:
http://flashthusiast.com/2010/05/05/...and-flash-cs5/
Скачал их пример (№7), переделал под свой шрифт - заработало. Но только, если указывать настоящее имя шрифта черех .font, а через ссылку не фурычит совсем. Самое странное, что сначала не работало с оригинальным названием шрифта.


Последний раз редактировалось zerAlex2; 12.08.2012 в 01:29.
Старый 12.08.2012, 01:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Всегда удивляло во Flash IDE это безобразие. То, что невозможно импортировать в библиотеку шрифт из папки, то есть не установленный в системе. Получается что шрифт, которому делаешь embed, у тебя всегда установлен, и без шаманских бубнов убедиться что всё будет прекрасно на машине без этого шрифта невозможно. И причина в том, что импортированному шрифту нельзя дать отличное имя. Хотя в диалоге импорта есть графа для ввода "имени", это имя символа в библиотеке. Не Класса (это другое поле), не имя для формата, а просто имя в библиотеке. Реально же имя шрифта в рантайме будет его собственным. Можно достучаться вот так:
Код AS3:
TLFformat.font = (new SegoeWP()).fontName;
если SegoeWP это Класс (задается во вкладке "ActionScript" диалога импорта, если поставить галочку "экспорт для ActionScript"). Фишка в том, что получаем мы таким способом просто строку, которая передает реальное имя шрифта, а не то что мы вводили. Реальное — такое же, как в системе у этого шрифта. То есть мы передали бы точно такую же строку, если бы использовали НЕ внедренный шрифт. Маразм. Когда создаешь поле кодом через new и потом назначаешь ему embedFonts = true, есть уверенность что это поле ничего не покажет, если внедренного шрифта нет. А вот с полями, созданными вручную в IDE, я такой уверенности не испытываю.
Вобщем рад что у Вас получилось. проверьте скомпиленную флэшку на другой машине, где этот шрифт точно не установлен.
__________________
Reality.getBounds(this);

Старый 12.08.2012, 17:59
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 9  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
Вот-вот. Именно так )
Осталось проверить на другом компе. Как я понял из адобовских описаний, чтобы быть уверенным во внедрённом тексте, нужно с swf-кой переносить и файл типа: textLayout_2.0.0.232.swz. Буду проверять.

Еще. На форуме альтернативщиков увидел, как там шрифт внедряли, мож кому сгодится:
http://forum.alternativaplatform.com...list/3995.page


Последний раз редактировалось zerAlex2; 12.08.2012 в 19:31.
Старый 12.08.2012, 20:22
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну это Embed для флекс_сдк. Я именно им и пользуюсь всегда, поскольку пишу и компилирую код во FlashDevelop. По ссылке кстати приведен совсем куцый фрагмент. У тега [Embed] для шрифтов есть несколько параметров. Почитать про них можно здесь и здесь (англ.)
__________________
Reality.getBounds(this);

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

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

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


 


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


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