【发布时间】:2018-12-15 11:04:18
【问题描述】:
我在fonts/ 目录中有一个字体。如何将其加载到游戏中,然后在我的游戏中的文本对象上使用它?我找不到任何关于在 Phaser 3 中使用字体的信息。
【问题讨论】:
-
它有点隐藏,但移相器文档中有一个字体示例文件夹:labs.phaser.io/index.html?dir=game%20objects/text/static
标签: phaser-framework
我在fonts/ 目录中有一个字体。如何将其加载到游戏中,然后在我的游戏中的文本对象上使用它?我找不到任何关于在 Phaser 3 中使用字体的信息。
【问题讨论】:
标签: phaser-framework
首先使用 css 加载你的字体(@fontface):
<style media='screen' type='text/css'>
@font-face {
font-family: font1;
src: url('media/yourfont.ttf');
font-weight:400;
font-weight:normal;
}
</style>
然后使用div 加载您的字体:
<div style="font-family:font1; position:absolute; left:-1000px; visibility:hidden;">.</div>
现在您可以将它添加到您的游戏中:
this.add.text(190, 136, 'text', {
fontFamily: 'font1',
});
【讨论】:
这是我做的一个小函数,只需要字体名和url:
function loadFont(name, url) {
var newFont = new FontFace(name, `url(${url})`);
newFont.load().then(function (loaded) {
document.fonts.add(loaded);
}).catch(function (error) {
return error;
});
}
并像这样使用它:
loadFont("mixolydian", "assets/fonts/mixolydian.ttf");
就是这样!您现在可以在 Phaser 中使用您的自定义字体。您所要做的就是将 fontFamily 值更改为您的新字体名称(即 mixolydian)。
【讨论】:
FontFace 也不能识别 documents.fonts
打字稿中有以下解决方案:
function loadFont(name, url) {<br>
 var newFont = new FontFace(name, `url(${url})`);<br>
 newFont.load().then(function (loaded) {<br>
    (document as any).fonts.add(loaded);<br>
  }).catch(function (error) {<br>
    return error;<br>
  });<br>
}
【讨论】: