这可能是一个新问题,或者只是我遗漏了一些明显的问题。请帮忙!我在我的AS3应用程序中嵌入了一个字体。我正在做的所有事情都是按照书本完成的,而且是半工作的。
在我的主要课程中,
[Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed",
mimeType="application/x-font")]
var MoolEmbed:Class;
然后在我的代码中:
var newFormat:TextFormat = new TextFormat();
newFormat.font = "MoolEmbed";
newFormat.size = 20;
newFormat.color = 0xFCF374;
year.autoSize = TextFieldAutoSize.LEFT;
year.text = "Hello World";
year.embedFonts = true;
year.setTextFormat(newFormat);
year.antiAliasType = "advanced";
这很好用,文字很精美。我可以旋转它,alphas适用于它,它很好地抗锯齿。问题是文本字段是动态的 - 稍后在代码中:
year.text = "And a second hello world";
一旦触发此代码,文本字段就会完全消失。我打开
year.border = true;
我可以看到文本字段仍然存在,但它的大小缩小到几个像素。想想也许是autoSize搞砸了,
//year.autoSize = ...;
同样的问题。考虑到它可能是嵌入式,我评论了这一行:
//year.embedFonts = true;
文本字段返回工作状态,但(可理解地)失去了执行alpha和旋转的能力。
知道发生了什么事吗?
答案 0 :(得分:13)
我写了一篇长篇健谈的条目,说明为什么这不起作用的可能原因。但是当我重新阅读你的代码时,我想我发现了错误。 更改行:
year.setTextFormat(newFormat);
要:
year.defaultTextFormat = newFormat;
应该这样做!
答案 1 :(得分:3)
作为defaultTextFormat不起作用,其他两个提示的组合起作用
import flash.text.Font;
在你的构造函数中:
Font.registerFont(MoolEmbed)
然后
第二次设置text属性后,请确保再次调用setTextFormat(newFormat)。
答案 2 :(得分:0)
您需要使用全局字体列表注册字体。
导入:
import flash.text.Font;
在你的构造函数中:
Font.registerFont(MoolEmbed)
答案 3 :(得分:0)
第二次设置text属性后,请确保再次调用setTextFormat(newFormat)。