我做的就像在教学中一样。
Class Fonts.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值为的Font资源 "资产/字体/ OPENSANS-REGULAR_0.TTF"
我做错了什么?
我的项目结构:
答案 0 :(得分: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;
}
}