如何在jsfl中将字体面更改为导入的字体

时间:2015-02-09 03:49:17

标签: flash jsfl

我正在写一个jsfl来将所有文本字段更改为导入的字体,我知道如何从这个问题JSFL - How to change the font of a text field?

更改文本字段的字体

问题是,我可以将字体更改为已安装的字体,但我无法将其更改为名为$NormalFont的导入字体,这里有一些屏幕截图可能让我理解。 enter image description here

以下是$NormalFont的属性 enter image description here

所以在我的代码中,我调用这样的函数:

textElement.setTextAttr("face", "$NormalFont");
没有改变。但我可以手动更改文本字体,如下所示: enter image description here

我注意到这里的字体名称为$NormalFont*,带有星号。 所以我称这个函数为:

textElement.setTextAttr("face", "$NormalFont*");

没有任何改变。

谁能帮帮我?因为我有超过100个fla文件要改变......

1 个答案:

答案 0 :(得分:0)

face这里是字体系列,Microsoft YaHei,而不是$NormalFont

$NormalFont是您在Google中嵌入的name的{​​{1}}属性。

(关于星号,我认为它只是为了提醒它它是一种嵌入式字体,仅此而已。这就是为什么在图书馆你不看它位于fontItem上,因为您已经知道它是嵌入字体。)

例如,如果您嵌入的字体是图书馆项目数组中的第一项:

fontItem

因此,您可以使用fl.trace(document.library.items[0].font);//Microsoft YaHei (1) fl.trace(document.library.items[0].name);//$NormalFont Microsoft YaHei

微软雅黑

如果您必须使用textElement.setTextAttr("face", "Microsoft YaHei"); textElement.setTextAttr("face", "微软雅黑"); 等自定义名称,请首先在库中找到名称为$NormalFont的{​​{1}},然后获取其item属性,然后设置对于文本字段,它为$NormalFont

font

(1)这有一个问题,就是JSFL无法在库中获取/设置face的字体样式(或者我不知道如何,甚至AS3在字体方面有问题)。如果是简单的粗体/斜体字体,如YaHei Bold,只需将其设置为:

var myFontItem;
var itemArray = document.library.items;
for (var i = 0; i < itemArray.length; i++) {
    if (itemArray[i].name == '$NormalFont') {
        myFontItem = itemArray[i];
    }
}

textElement.setTextAttr("face", myFontItem.font);

但是如果你想使用更多样式,比如黑色浓缩等,最好的办法是直接编辑字体文件数据以制作新的自定义字体并进行安装,以便Flash IDE中的字体名称是唯一的,然后使用那个名字。我必须这样做一次。

相关问题