Phaser.GameObjects.Text#
Text自身会生成一个内部的隐藏画布,通过标准的Canvas fillText API把文字渲染上去。然再通过这个画布生成纹理,渲染到游戏上。
您只能显示当前已加载且可供浏览器使用的字体:因此字体必须预先加载。Phaser不会为您做这些事情,所以您需要使用第三方字体加载器,或者在您的Phaser游戏所在页面的CSS中准备好字体。
关于性能的说明:每当一个Text对象的内容发生变化时,即改变显示的文本或文本的样式,就需要重新制作Text画布,如果是在WebGL上,则需要重新上传新的纹理到GPU。如果经常使用,或者在游戏中使用大量的Text对象,这可能是一个昂贵的操作。如果你遇到性能问题,你最好使用Bitmap Text,因为它受益于批处理并避免昂贵的Canvas API调用。
new Text(scene, x, y, text, style)#
Extends#
Members#
active :boolean#
alpha :number#
alphaBottomLeft :number#
alphaBottomRight :number#
alphaTopLeft :number#
alphaTopRight :number#
angle :number#
autoRound :boolean#
blendMode :Phaser.BlendModes|string#
body :Phaser.Physics.Arcade.Body|Phaser.Physics.Arcade.StaticBody|MatterJS.BodyType #
cameraFilter :number#
canvas :HTMLCanvasElement#
实例的画布。可以转换成纹理。
/** 文字精灵
* @description 把输入的文字转换成纹理后再转成精灵,以提高性能
*
*/
export class Character extends Phaser.GameObjects.Sprite {
constructor(scene:Phaser.Scene,x:number,y:number, character:string) {
const text = scene.make.text({
add: false,
x: 0,
y: 0,
text: character,
style: {
fontSize: '64px',
fontFamily: 'gb_kaiti',
color: '#ffffff',
align: 'center',
backgroundColor: '#ff00ff'
}
});
// 用Text的画布生成纹理,加到场景的纹理管理器中
scene.textures.addCanvas(character, text.canvas);
// 用字头的纹理生成精灵
super(scene,x,y,character);
}
}