PDA

Просмотр полной версии : Ни как не могу внедрить шрифт


vvk80
18.05.2007, 14:21
Здравствуйте, уважаемые форумчане!

Использую Flash 9.
У меня следующая проблема: хочу создать класс, позволяющий динамически создавать разные textField, обладающие набором одинаковых свойств. Не хочу использовать movieClip и вообще как-то привязываться к дизайн-тайм. Хочу чтобы все создавалось в коде...

Я пока в самом начале пути, но у меня никак не получается внедрить шрифт... В AS файле внедрить шрифт не возможно, поэтому пытаюсь как его впихнуть в fla-файл. Но у меня не получается! Пожалуйста, объясните в чем дело... Не ужеле придется по старинке - MovieClip + TextField...


Я в этом деле новичок, поэтому не пинайте меня слишком сильно, если на самом деле все окажется очень просто:)

файл загрузить на форум не удалось, поэтому даю внешнюю ссылку

http://www.vvk80.narod.ru/Files/draft.zip

Заранее спасибо за помощь...

etc
18.05.2007, 14:41
Ну да, по старинке, лежит текстовое поле где-нибудь, с внедренным набором символов…

vvk80
18.05.2007, 14:54
Ну да, по старинке, лежит текстовое поле где-нибудь, с внедренным набором символов…

Если я правильно понял, надо создавать мувиклип, в нем это текстовое поле (все это в дизайн-тайм)...
Далее надо создавать экземпляры этого мувика столько раз, сколько тебе нужно текстовое поле и обращаться к текстовому полю следующим образом:
movieClipInstance.textFieldInMovieClip.text = "Мой текст, который надо отобразить"...
или надо как-то по-другому...

Но это же неудобно... Сам Adobe рекомендует не использовать MovieClip, если не нужна таймлайн... Специально для этого созданы такие классы как Sprite, Shape и т.д., которые, насколько я знаю, не имеют таймлайн. Используя их можно было бы оптимизировать скорость работы swf (по словам Adobe)...

Хочется все классами описать, чтобы реюзать контент, как в C#...
Неужто нет другого способа... (для Flash 9)?

Заранее спасибо за помощь!

etc
18.05.2007, 14:57
Зачем мувиклип?
Кинуть на сцену где-нибудь за пределами текстовое поле с необходимыми внедренными шрифтами и все.
А в коде уже new TextField(), embedFonts = true и понеслась…

vvk80
18.05.2007, 18:02
Зачем мувиклип?
Кинуть на сцену где-нибудь за пределами текстовое поле с необходимыми внедренными шрифтами и все.
А в коде уже new TextField(), embedFonts = true и понеслась…

Дико извиняюсь, но у меня не работает :boredom:
Я так и не понял, а объект TextFormat надо создавать? Что указывать в property font? Символ фонта в библиотеке должен лежать?

vvk80
18.05.2007, 18:16
Зачем мувиклип?
Кинуть на сцену где-нибудь за пределами текстовое поле с необходимыми внедренными шрифтами и все.
А в коде уже new TextField(), embedFonts = true и понеслась…

вот код не работает хоть ты тресни...
myText - это созданный textField за пределами видимости на сцене, шрифт внедрен в него... я забираю его текстформат и пытаюсь присвоить его новому текстфилду - и кукиш не работает...

var newFormat:TextFormat = new TextFormat();
newFormat = myText.getTextFormat();
trace(newFormat.font);


function createBodyText(xCoord:Number, yCoord:Number):void
{

var myLabel:TextField = new TextField();
myLabel.type = TextFieldType.DYNAMIC;
myLabel.multiline = true;
myLabel.selectable = false;
myLabel.embedFonts = true;
myLabel.antiAliasType = AntiAliasType.ADVANCED;
myLabel.autoSize = TextFieldAutoSize.LEFT;
myLabel.x = xCoord;
myLabel.y = yCoord;

myLabel.setTextFormat(newFormat);

myLabel.htmlText = "<br>asfawfa";

rootContainer.addChild(myLabel);

}

createBodyText(20,30);

etc
18.05.2007, 18:27
На сцене, за её пределами необходимо разместить текстовое динамическое поле, с выбранным шрифтом. Нажав на кнопку Embed, необходимо выбрать нужные диапазоны символов для включения. В библиотеке ничего быть не должно.

vvk80
18.05.2007, 18:36
На сцене, за её пределами необходимо разместить текстовое динамическое поле, с выбранным шрифтом. Нажав на кнопку Embed, необходимо выбрать нужные диапазоны символов для включения. В библиотеке ничего быть не должно.

походе я на пути к решению проблемы:
вместо метода setTextFormat можно использовать свойство defaultTextFormat... вроде заработало, но пока еще полностью не протестировал...
http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=15&catid=288&threadid=1268129&highlight_key=y&keyword1=font

Блин, но какая черт побери между ними разница????

vvk80
25.09.2007, 17:16
классная рекомендация по теме:

все работает, можно легко использовать внедеренные шрифты

http://blog.illianced.com/2007/09/11/load-fonts-on-the-fly-in-as3/

etc
25.09.2007, 21:05
У меня есть кое что получше (http://etcs.ru/blog/as3/fontloader/).

Torero
26.09.2007, 08:23
Если я не ошибаюсь, немного поизвращавшись, можно сделать посимвольное внедрение шрифтов, т.е. внедрять только те символы, которые используются в данном коде. (для хранения каждого символа использовать отдельный swf и, по мере необходимости, подгружать их).
1.Имеет-ли смысл это делать, или-же результат заведомо будет лажовым?
2.Если не внедрить какой-то символ, то он просто-напросто не будет отображаться. Несмотря на то, что flash, насколько я помню, в данном случае, не выдает ошибку, можно-ли ее перехватить?

etc
26.09.2007, 10:28
Это просто не будет работать.

vvk80
26.09.2007, 12:10
У меня есть кое что получше (http://etcs.ru/blog/as3/fontloader/).

спасибо большое...
еще одно большое спасибо за наглядный пример как правильно писать свои классы и оформлять код...