Flash as3动态运行时字体嵌入

Flash as3动态运行时字体嵌入,flash,actionscript-3,flash-cs4,Flash,Actionscript 3,Flash Cs4,我在FlashCS4中有一个AS3项目,在该项目中,我动态加载一种字体,其位置通过XML传递。当我使用字体名(这里是EASTERAR.TTF)时,它就可以工作了。但是,如果我用一个变量替换它,我会得到一个无效的元数据错误。怎么解决呢? 工作正常 [Embed(source='C:/fonts11/EASTERAR.TTF', fontFamily="xyz")] var xyz:Class; var arialEmbeddedFont:Font = new xyz(); var textF

我在FlashCS4中有一个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")]

谢谢。

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

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

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

var fontname:String='EASTERAR.TTF'[Embed(source='C:/fonts11/'+fontname,fontf家族=“xyz”)]
public var fontname:String=“verdana.TTF”;[Embed(source=FontName,FontName=“Verdana”)]公共变量EmbeddedFont:Class不起作用,因为嵌入的元信息是在编译时编译和解释的。当你把一个变量放在那里,你就知道这个值会发生变化,什么会破坏整个过程。然后,您可以传递的唯一值是字符串和数字。将被视为常量字符串的任何内容,都会导致错误。