as3 динамическое встраивание шрифтов во время выполнения - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть проект AS3 во Flash CS4, в котором я динамически загружаю шрифт, местоположение которого передается через XML.Это работает, когда я пишу в имени шрифта (здесь EASTERAR.TTF).Однако, если я заменю его переменной, я получу недопустимую ошибку метаданных.Как это можно решить?

Работает нормально

[Embed(source='C:/fonts11/EASTERAR.TTF', fontFamily="xyz")]

var xyz:Class;

var arialEmbeddedFont:Font = new xyz();

var textFormat:TextFormat = new TextFormat();
textFormat.color = 0xFF0000;
textFormat.font = arialEmbeddedFont.fontName;
textFormat.size = 32;

var textField:TextField = new TextField();
textField.autoSize = TextFieldAutoSize.LEFT;
textField.wordWrap = true;
textField.defaultTextFormat = textFormat;
textField.embedFonts = true;
textField.text = "rohan";
textField.width = 500;
textField.x = 25;
textField.y = 25;
addChild(textField);

Показывает ошибку метаданных

var fontname:String = 'EASTERAR.TTF'
[Embed(source='C:/fonts11/'+fontname, fontFamily="xyz")]

Спасибо.

1 Ответ

2 голосов
/ 11 февраля 2011

Вы не можете использовать переменные в метатегах Embed (на самом деле, вы не можете использовать ни в одной мета).
И не думайте, что вы также можете встроить шрифт во время выполнения ...

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

В качестве примера:
Создайте новый FLA-файл, вставьте свой шрифт и экспортируйте в ActionScript, затем экспортируйте файл.
Теперь создайте другой FLA, используйте URLLoader для загрузки предыдущего SWF-файла и используйте getDefinitionByName ( flash.utils.getDefinitionByName ), чтобы получить доступ к шрифту внутри загруженного SWF-файла. Теперь вы можете изменить шрифт вашего текста на новый шрифт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...