Возможно ли внедрять шрифты во время выполнения для использования с существующими экземплярами динамических текстовых полей в SWFs?

#actionscript-3 #fonts #embed #textfield

#actionscript-3 #шрифты #Внедрить #textfield

Вопрос:

Я пытаюсь внедрять шрифты во время выполнения в actionscript, и это в некоторой степени работает. Я могу внедрять шрифты либо с помощью тега embed, либо загрузив ресурс библиотеки шрифтов с именем ссылки и используя его с новым текстовым полем. Однако текстовое поле, существующее в видеоролике, уже не имеет встроенного шрифта и в нем отсутствуют символы.

Краткий пример в коде (textInstance существует на видеоролике):

 var embeddedFonts = Font.enumerateFonts(); //Shows embedded font

var textFormat:TextFormat = textInstance.getTextFormat();

textInstance.text = "Don't be lazy"; //missing characters 

var textField:TextField = new TextField();

textField.embedFonts = true;
textField.defaultTextFormat = textFormat;
textField.selectable = false;
textField.autoSize = TextFieldAutoSize.LEFT;
textField.multiline = true;

textField.text = "Don't be lazy"; //shows all characters
addChild(textField);
  

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

Ответ №1:

Я предполагаю, что вы textInstance уже добавили их в свой swf-файл, и в нем есть TextFormat шрифт, который вы загружаете позже.

После загрузки вашего шрифта в swf вам следует либо снова установить текст с помощью textInstance.text = textInstance.text (если textInstance есть defaultTextFormat ), либо установить TextFormat с помощью textInstance.setTextFormat(textFormat) , поскольку текстовое поле не обновляется автоматически при загрузке шрифта.

Комментарии:

1. Нет кубиков. В тексте по-прежнему отсутствуют символы: (

Ответ №2:

Мне пришлось создать новый TextFormat со шрифтом и установить его как defaultTextFormat по умолчанию, чтобы заставить его работать.