5

希望这是一个新问题,或者只是我错过了一些明显的东西。请帮忙!我正在将字体嵌入到我的 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 和旋转的能力。

知道发生了什么吗?

4

4 回答 4

13

我写了一篇长篇大论的文章,​​讨论了为什么这不起作用的可能原因。但是当我重新阅读你的代码时,我想我发现了这个错误。更改行:

year.setTextFormat(newFormat);

到:

year.defaultTextFormat = newFormat;

应该这样做!

于 2009-11-17T15:55:40.727 回答
3

由于 defaultTextFormat 不起作用,其他两个提示的组合有效

import flash.text.Font;

在您的构造函数中:

Font.registerFont(MoolEmbed)

进而

第二次设置 text 属性后,请确保再次调用 setTextFormat(newFormat)。

于 2010-09-23T18:52:31.740 回答
0

您需要在全局字体列表中注册您的字体。

进口:

import flash.text.Font;

在您的构造函数中:

Font.registerFont(MoolEmbed)
于 2009-11-16T20:49:41.963 回答
0

第二次设置 text 属性后,请确保再次调用 setTextFormat(newFormat)。

于 2009-11-17T04:38:15.197 回答