PDA

Просмотр полной версии : Динамический текст и его форматирование


Liox
24.10.2007, 18:49
Я имею динамическое поля текста... Присвоил ей переменную b1.
Имею переменную t1 в которой содержится текст который нужно отразить в поле b1. Текст отображается, однако я совсем непонимаю как можно отформатировать этот текст, чтобы он просматривался не Arial а мой шрифт Cooperplate Gothic lght. Простотрел все темы об этом. МОжет я неправильно применяю....


var format:TextFormat = new TextFormat();
format.color = 0xFF0000;
format.size = 15;
format.font = "Cooperplate Gothic Light";

b1.embedFonts = true;
b1.setNewTextFormat(format);
b1.selectable = false;

Infectedcell
24.10.2007, 18:57
настройки текстового поля посмотри.. embeded fonts
гораздо быстрее, чем кодить, если конечно не создаешь текстовое поле скриптом..

Kikasso
24.10.2007, 19:06
var format:TextFormat = font_txt.getTextFormat();

b1.embedFonts = true;
b1.setNewTextFormat(format);
b1.selectable = false;
font_txt - это текстовое поле, лежащее вне поля зрения, с нужным шрифтом и нужными символами в шрифте. В этом поле должна быть хоть одна буква, иначе формат не заграбится.

Liox
24.10.2007, 19:18
Простите. Но вашь пример не работает. Насколько я понял font_txt это Instance name динамического поля за границами. Где набиты все буквы которые я юзаю, и они должны быть отформатированы как нужно форматировать b1. Если так, то ничего не изменилось...

Может надо как-то шрифт импортировать или в настройках прописывать? Я что-то подобное слышал, но не более.

Kikasso
24.10.2007, 19:25
Насколько я понял font_txt это Instance name динамического поля за границами. Где набиты все буквы которые я юзаю, и они должны быть отформатированы как нужно форматировать b1. Если так, то ничего не изменилось...
Покажите.

Liox
24.10.2007, 19:37
Вот. Музыку не стал выкладывать ибо не нужна.

Kikasso
24.10.2007, 19:55
Я вот этого места не понял:
data_lv.onLoad = function (success:Boolean):Void {
if(success) {
trace(data_lv.s1);

b1=data_lv.s1;
trace(b1);
}
}

var format:TextFormat = font_txt.getTextFormat();

b1.embedFonts = true;
b1.setNewTextFormat(format);
b1.selectable = false;
trace(b1);
У вас b1 переменная или текстовое поле? Может
b1.text=data_lv.s1;

Liox
24.10.2007, 20:03
b1-это переменная присвоенная полю динамическому в свойствах его же. Так есть такой параметр как Variables.
Если так прописывать, ничего вообще не появляется в том поле b1 для текста. Я вот непонимаю одного, у меня даже тот шрифт что изначально cooperplate выводится на экран в arial виде... Может у меня как-то не добавлен в мувик шрифт или ещё что такое?

Kikasso
24.10.2007, 20:07
Вот тот параметр как раз прописывать не надо. Надо полю давать имя, и работать со свойством .text
Шрифты у вас похоже не включены. Кнопка Embed.

Liox
24.10.2007, 20:17
Хорошо. Сделал всё как сказали, но текст всёравно не выводится. Прям навождение какое-то. Потом наверняка окажется какая-нибудь пустяшная ошибка, которая просто не бросилась в глаза.
Теперь это выглядит так


var data_lv:LoadVars = new LoadVars ();
data_lv.load("songs.txt");
data_lv.onLoad = function (success:Boolean):Void {
if(success) {


t1.text=data_lv.s1;
trace(t1.text);
t1.embedFonts = true;
t1.setNewTextFormat(format);
t1.selectable = false;
trace(t1.text);
}
}

var format:TextFormat = font_txt.getTextFormat();

t1.embedFonts = true;
t1.setNewTextFormat(format);
t1.selectable = false;


где t1- это метка динамического текстового поля.
data_lv.s1-переменная с присвоенным значением "first"

в обоих trace(); выводит значение first
Всё вроде бы хорошо. Но в текстовом поле ничего не отображается.

Liox
24.10.2007, 21:30
Нашёл примерчик на flashblog.ru
Однако там для версии flash mx и немного не то. Но думаю можно как-то вытянуть технологию, если она ещё сохранилась. Пока что безуспешно...

Liox
24.10.2007, 21:42
Если это так сложно возможно просто создать новое динамическое поле на этом месте, с таким шрифтом??

Kikasso
24.10.2007, 22:29
Вот примерчик.
Обратите внимание, какие символы я включил, чем отличаются setNewTextFormat от setTextFormat, и что шрифт в поле которое я форматирую ( и в котором НЕ выбраны символы ) отличается от того поля, в которое символы включены.

Также помогает разобраться галочка "generate size report" в настройках публикации, вкладка flash

etc
24.10.2007, 22:56
Liox, терпения на 10 минут хватило? У нас запрещено поднимать темы. Сидите и ждите ответа.
Ответ может быть сегодня, завтра, через неделю или вообще не быть. Но поднимать тему бесполезными постами никто не имеет права.

Liox
25.10.2007, 19:18
Всё сделал. Как и обещал выложить своё творение.
Он очень сильно не оптимизирован. И поидее можно убрать много переменных, проработав ненужные цепи. И используя более короткие пути. Каждая строка прокомментирована. Начинающим будет легко всё понять.
Читаем текстовик lorem.txt обязательно... :rtfm:
За помощь всем спасибо. Это мой дебют во flash . :yahoo:

Chas
25.10.2007, 20:00
2Kikasso
у мя тоже есть вопрос.
вот в твоем примере все работает. но, как только ставишь html=true; htmlText="TEST"; то в поле уже ничего не отображается. почему? чем лечить?

Kikasso
25.10.2007, 20:33
2Kikasso
у мя тоже есть вопрос.
вот в твоем примере все работает. но, как только ставишь html=true; htmlText="TEST"; то в поле уже ничего не отображается. почему? чем лечить?
не отображается в полях, положенных на сцену. Если делать поле программно, отображается.
Лечить с помощью css. ( TextField.StyleSheet )

Chas
25.10.2007, 20:57
ничего не понимаю. как лечить с помощью css? скопировать стиль поля с шрифтом?
вообще trace(font_txt.styleSheet) дает undefined.
ребят, поправьте мне, пожалуйста, "тестовый" исходник, чтобы работало.

Kikasso
25.10.2007, 21:16
Посмотрите в хелпе.

Chas
25.10.2007, 21:44
не понимаю что именно искать в хелпе =/

Kikasso
25.10.2007, 21:49
StyleSheet

Chas
25.10.2007, 22:49
я перечитал весь хелп по StyleSheet.
что там может помочь?
помогло добавление тегов <font face="имя шрифта">...</font> в htmlText перед добавлением текста.
но это совершенно не подходит.
идея какая: спрятано в мувике текстовое поле с нужным шрифтом. настройки которого (шрифт, размер текста по умолчанию,цвет по умолчанию) программно передаются всем остальным текстовым полям в мувике. тогда для смены шрифта /его настроек для всех текстовых полей мувика нужно только поменять спрятанное корневое текстовое поле.
гм... а как с помощью SlyleSheet назначить стиль применимый ко всему документу с шрифтом из спрятанного текстового поля с embed?

fmt=font_txt.getTextFormat(1);
txt3.styleSheet=new TextField.StyleSheet ();
style=new Object(); style.fontFamily=fmt.font;
txt3.styleSheet.setStyle(".",fmt);

не катит =/

Kikasso
25.10.2007, 23:34
css:
p {
font-family: georgia;
}
В поле зашита джоржия 14. По событию onLoad присваиваю стайлшит текстовому полю. И вот оно уже работает:
my_txt.htmlText = '<p>текст</p>'
А если поле создавать динамически, то проблемы не бул