2012-03-22 1 views
5

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

Я работаю в Flash CS5 с Actionscript 3. Я пытаюсь использовать actioncript для создания текстового поля и заполнять его текстом. Я вложил свой шрифт в свой проект, используя окно «Font Embedding». Однако, когда код для создания текстового поля запускается, если «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?

+0

Вы объявили свой выбранный шрифт в своей библиотеке swf? Если да, выбрали ли вы глифы для встраивания? – ToddBFisher

+0

Да и да. Я также проверил «экспорт для actionscript» и «экспорт в фрейм 1». – TeaCake

+0

В коде нет ничего плохого. Вы пробовали использовать другой шрифт? –

ответ

4

Вы должны установить текст как последнее, что вы делаете. Так что эта строка 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); 
+1

Удивительный! Просто попробовал это, и это действительно значительная часть проблемы. Оказывается, было несколько факторов, которые меня заворачивали. Один из них я прокомментировал photolist.size = TextFieldAutoSize.LEFT. Другая, и более крупная проблема (которую предложили ваши попытки попробовать разные шрифты, помогли мне диагностировать), заключалась в том, что мои шрифты были оставлены в TLF после моих ранних экспериментов. Если вы не возражаете, я спрашиваю, каковы настройки Classic и TLF? Есть ли какая-то причина, по которой я не могу использовать TLF? Должен ли я злиться на то, что я не могу использовать TLF? – TeaCake

 Смежные вопросы

  • Нет связанных вопросов^_^