as3动态运行时字体嵌入

时间:2011-02-11 05:21:07

标签: flash actionscript-3 flash-cs4

我在Flash CS4中有一个AS3项目,我在其中动态加载一个字体,其位置通过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 个答案:

答案 0 :(得分:2)

您不能在嵌入元标记中使用变量(实际上,您不能在任何元数据中使用) 并且不要认为你也可以在运行时嵌入字体......

您可以做的是在swf中嵌入字体并在运行时动态加载此文件。

举例说明:
创建一个新的FLA文件,嵌入您的字体并导出到ActionScript,然后导出该文件 现在,创建另一个FLA,使用URLLoader下载以前的SWF并使用 getDefinitionByName flash.utils.getDefinitionByName )来访问加载的SWF中的字体。 现在,您可以将文本字体更改为新字体。