0

我正在尝试使用字体嵌入创建动态文本字段。嵌入是动态的,如下所示:

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 编译它时,文本没有出现,也没有错误警告。
是什么原因?我应该使用其他方法来嵌入字体吗?!

4

1 回答 1

2

有几篇文章介绍了 CS5 中新的字体嵌入的巨大差异。我觉得这个挺好的:

在 Flash CS5 中嵌入字体和 HTML 文本时遇到问题?

嵌入字体的方式是 CS5 的改进——但这意味着当您在 CS5 中打开 FLA 进行编辑时,您的所有 CS5 动态文本字段都会中断!这太糟糕了!(部署在 SWF 中的一切仍然正常。)

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

这里有代码:

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);
于 2011-03-08T12:55:58.187 回答