1

我正在按照说明中的方式做所有事情。

类字体.hx

import flash.text.Font;

@:font("assets/fonts/OPENSANS-REGULAR_0.TTF") class OpenSansFont extends Font { }

class Fonts 
{
    public static inline var OPEN_SANS_PATH = "assets/fonts/OPENSANS-REGULAR_0.TTF";
    public static inline var OPEN_SANS_FONTNAME = "OPENSANS-REGULAR_0.TTF";

    public function new()
    {
        Font.registerFont(OpenSansFont);
    }
}

但是当我尝试用这个创建 TextFormat 时:

var tf:TextFormat;
var openSans:Font = Assets.getFont(Fonts.OPEN_SANS_PATH);
tf = new TextFormat(openSans.fontName);

我发现了这个错误:

Assets.hx:257: [openfl.Assets] 没有 ID 为“assets/fonts/OPENSANS-REGULAR_0.TTF”的字体资源

我究竟做错了什么?

我的项目结构:

我的项目结构

4

1 回答 1

1

您不能用于通过/等openfl.Assets嵌入的资产。@:font@:bitmap

TextFormat您应该为构造函数使用字体的名称。我假设您已经尝试过,看看如何存在OPEN_SANS_FONTNAME变量。但是,这不是字体的名称,只是它的文件名

在 Windows 上,您应该能够通过双击字体(打印/安装按钮正下方)找到名称。

或者,这也应该有效:

import flash.text.Font;

@:font("assets/fonts/OPENSANS-REGULAR_0.TTF") class OpenSansFont extends Font { }

class Fonts 
{
    public static var OPEN_SANS_FONTNAME;

    public function new()
    {
        Font.registerFont(OpenSansFont);
        OPEN_SANS_FONTNAME = new OpenSansFont().fontName;
    }
}
于 2014-09-05T09:18:15.597 回答