2011-02-11 82 views
0

我有一个AS3项目在Flash CS4中,我动态加载的位置是通过XML传入的字体。当我使用字体名称(这里是EASTERAR.TTF)写入时,它会起作用。但是,如果我将其替换为变量,则会收到无效的元数据错误。它如何解决?as3动态运行时字体嵌入

做工精细

[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")] 

感谢。

回答

2

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

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

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

+0

var fontname:String ='EASTERAR.TTF' [Embed(source ='C:/ fonts11 /'+ fontname,fontFamily =“xyz”)] – rohan 2011-02-11 12:37:43