我正在尝试使用字体嵌入创建动态文本字段。嵌入是这样的动态:
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编译它时,文本不会出现,也没有错误警告 是什么原因?我应该使用其他方法进行字体嵌入吗?!
答案 0 :(得分: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);