2011-03-08 54 views
0

我正尝试使用字体嵌入来创建动态文本字段。 Embeding是动态的,是这样的:
Flash CS5,动态字体嵌入问题

public class TextFormats extends TextFormat { 

    private var TF:TextFormat = new TextFormat(); 
    [Embed(source = "/fonts/tahoma.ttf", fontWeight = "normal", fontFamily = "tahomaNormal")] 
    var fontTahoma:Class;    

    private var fTahoma:Font; 

    public function TextFormats():void { 
     fTahoma = new fontTahoma(); 
    } 

    public function format(fmb:String):TextFormat { 
     TF.letterSpacing = -1; 
     TF.font = fTahoma.fontName;  
     switch(fmb) { 
      case "combolist_label":     
       TF.color = 0x383838; 
       TF.size = 13; 
       TF.letterSpacing = 0; 
       break;     
     } 
     return TF; 
    } 
} 

当我编译在Flash CS4,嵌入式文字出现在舞台上很好!但是,当我试图用Flash CS5进行编译时,文本不会显示,也不会出现错误警告。
是什么原因?我应该使用另一种字体嵌入方法吗?!

回答

2

有几篇关于CS5新增的字体嵌入差异的文章。我觉得这是一个相当不错的:

Having trouble with embedded fonts and HTML text in Flash CS5?

中嵌入字体的方式是在CS5的改善 - 但它意味着你所有的CS5动态文本字段打破,当你打开FLA在编辑CS5!哪个很烂! (在SWF中部署的所有东西仍然正常工作)。

如果您在CS5中打开CS4 FLA,您基本上需要重新生成动态文本字段并重新应用嵌入。

有代码here

import flash.text.*; 
var font:Font1=new Font1(); 
var txt_fmt:TextFormat=new TextFormat(); 
txt_fmt.font=font.fontName; 
txt_fmt.size=24 
var txt:TextField=new TextField(); 
txt.autoSize=TextFieldAutoSize.LEFT; 
txt.defaultTextFormat=txt_fmt; 
txt.embedFonts=true 
txt.text="Designscripting.com" 
txt.selectable=false 
addChild(txt);