Встроенные шрифты не отображаются в текстовых полях, созданных в ActionScript. - PullRequest
5 голосов
/ 22 марта 2012

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

Я работаю во Flash CS5 с Actionscript 3. Я пытаюсь использовать actionscript для создания текстового поля и заполнения его текстом.Я встроил свой шрифт в свой проект, используя окно «Внедрение шрифтов».Однако при выполнении кода для создания текстового поля, если "embedFont = true;", шрифт невидим.Курсор по-прежнему меняется при наведении на него, поэтому я знаю, что он там.Или, по крайней мере, его текстовое поле, я думаю.Динамические текстовые поля со встроенным текстом, которые уже находятся на сцене, кажутся незатронутыми.

Я пытался изменить формат структуры встроенных шрифтов, но не работает.Я пытался напрямую встроить шрифт с тегом «embed» через actionscript, но, похоже, он не работает с CS5, или я не знаю, что делаю.Как видно из предоставленного кода, я попытался «зарегистрировать» шрифт, но безуспешно.Я пытался использовать:

var font:Font = new screenfont(); //"screenfont" is the name from Embedding Fonts    

var format:TextFormat = new TextFormat();

format.font = screenfont.fontName;

Без кубиков.

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

Вот простая версия моего кода, где "screenfont" - это имя, которое я указал вОкно «Внедрение шрифтов»:

Font.registerFont(screenfont);

            //TextFormat
var listformat:TextFormat = new TextFormat();

listformat.align = TextFormatAlign.LEFT;
listformat.size = 20.8;
listformat.color = 0x0DAC54;
listformat.font="Fixedsys Excelsior 3.01";


           //TextField
var photolist:TextField = new TextField();
    photolist.x = photos_x;
    photolist.y = tempY;
    photolist.width = photos_wdth;
    photolist.height = photos_hght;
    photolist.text = photoname;

    photolist.embedFonts = true; //<--- This freakin' guy!

    photolist.antiAliasType = AntiAliasType.ADVANCED;
    photolist.defaultTextFormat=listformat;
    photolist.selectable = false;
    photolist.wordWrap =  true;

    mediapage.photos.addChild(photolist);

Надеюсь, это дает ясную картину.

Итак, как именно выполняется встраивание в CS5?

1 Ответ

4 голосов
/ 22 марта 2012

Вы должны установить текст как последнее, что вы делаете. Так что эта строка photolist.text = photoname; должна быть после всего остального.

var photolist:TextField = new TextField();
photolist.x = photos_x;
photolist.y = tempY;
photolist.width = photos_wdth;
photolist.height = photos_hght;

photolist.embedFonts = true; 
photolist.antiAliasType = AntiAliasType.ADVANCED;
photolist.defaultTextFormat=listformat;
photolist.selectable = false;
photolist.wordWrap =  true;
photolist.text = photoname;//<-- set text only after applying all formatting and embedding

mediapage.photos.addChild(photolist);
...