Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > Как изменить шрифт динамического текста?


Автор: Ergo 28.5.2010, 11:12
Приветствую прогеров. 

Скажу сразу. Я дизайнер и не упарываюсь программированием настолько, чтобы успевать за новинками и хитрыми способами реализовать что-либо. Собственно по-этому у меня и возникла следующая проблема.

Имеется код который заставляет уменьшаться число в динамическом тексте. 

Код

var gCounter : int = 27000;  //начальные цифры для обратного отсчета
var timer : Timer = new Timer(20); // здесь выставляем время

timer.start();  //запускаем таймер

timer.addEventListener(TimerEvent.TIMER, evtTimer);  //вешаем на таймер событие

function evtTimer(event : TimerEvent) : void {
  if (gCounter > 17800) gCounter=gCounter-100;
  textCounter.text = String(gCounter); //выводим в текстовом поле переменную gCounter
}


Куда здесь вписать строчку, чтобы она задавала надписи с числом конкретный шрифт, который мне нужно.?
Если задавать шрифт из меню свойств объекта, где собственно обычному тексту и задается шрифт, то почему-то при выполнении счета (анимации уменьшения числа) шрифт меняется на какой-то дефолтный. 

http://saveimg.ru/show-image.php?id=54ed5a14fe5ae10e7953259b3f723c4e

Спасибо. Жду ответа.

Автор: bars80080 28.5.2010, 14:21
Цитата(Ergo @  28.5.2010,  11:12 Найти цитируемый пост)
Если задавать шрифт из меню свойств объекта, где собственно обычному тексту и задается шрифт, то почему-то при выполнении счета (анимации уменьшения числа) шрифт меняется на какой-то дефолтный. 

такое поведение.

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

Код

var f = new TextFormat();
f.size = 12;
f.fontFace = 'Arial'; // тут я наверняка вру насчёт свойств объекта. посмотрите сами как правильно

var t = new TextField();
t.defaultTextFormat = f;


всё, теперь поле будет отображаться по дефолту с установленными параметрами

Автор: Ergo 28.5.2010, 21:35
bars80080

Этот код в какой кадр установить? Выше моего кода?

Автор: bars80080 28.5.2010, 22:24
ну, желательно сразу после того места, где создаётся textCounter.
в крайнем случае должно проканать вот так:

Код

// там же где инициализация таймера. но только не надо сувать дефолтное форматирование в слушатель
var f:TextFormat = new TextFormat();
f.size = 20;
f.color = 0xff0000;
f.font = 'Arial';
f.bold = true;
textCounter.defaultTextFormat = f;

var gCounter : int = 27000;  //начальные цифры для обратного отсчета
var timer : Timer = new Timer(20); // здесь выставляем время
timer.start();  //запускаем таймер
timer.addEventListener(TimerEvent.TIMER, evtTimer);  //вешаем на таймер событие
function evtTimer(event : TimerEvent) : void {
    if (gCounter > 17800) gCounter=gCounter-100;
    textCounter.text = String(gCounter); //выводим в текстовом поле переменную gCounter
}

Автор: Ergo 2.6.2010, 02:40
bars80080

Благодарю за помощь. Все работает, только почему-то с дефолтными шрифтами (типа ариала).
То есть если прошу применить что-нибудь экзотическое, то шрифт некорректно применяется.

Автор: bars80080 2.6.2010, 15:53
Цитата(Ergo @  2.6.2010,  02:40 Найти цитируемый пост)
То есть если прошу применить что-нибудь экзотическое, то шрифт некорректно применяется. 

если у пользователя нет такого шрифта, то будет подсовывать тот, какой ОС сочтёт наиболее похожим.
экзотические шрифты покатят только если их встроить с помощью тэга [embed], который работает только во флексе и флэш CS4+, да и то с установленной флексовской библиотекой

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)