如何在 Phaser 中制作游戏内按钮(带文字)?
How to make an in-game button (with text) in Phaser?
我制作了一张 PNG 图像作为我的按钮背景。在我相关状态的 preload()
中,我加载了该图像。我想要一种方法将此图像放置在世界中并能够在其上设置文本(并且还可以单击但我想这在这里有点不重要,因为我知道如何设置事件处理程序)。
我以为我可以用
Text text = new Text(x,y,foo,style);
text.texture = <something>
但是尝试创建一个 new Texture()
在 DartEditor 中显示一个警告 "undefined class Texture",无论如何(据我所知?)Texture
似乎没有允许提供源图像 key/URL..
所以有 Phaser 经验的人可以告诉我如何获得我想要的游戏内按钮吗?
我目前似乎已经或多或少地实现了我想要的(可能需要在这里和那里调整一些值,但通常看起来还不错)使用这样的代码
class MyState
{
preload() {
//...
game.load.image('key','$assetPath/button.png');
//...
}
create() {
Sprite temp2;
temp2 = new Sprite(this.game, x, y, 'button');
BitmapData bmp = game.add.bitmapData(temp2.width, temp2.height);
bmp.draw(temp2);
//Text positioning x,y in fillText() is just my choice of course
bmp.ctx.fillText('Wait', bmp.width / 2, bmp.height / 2);
game.add.sprite(game, someX, someY, bmp);
}
}
编辑:对于我正在做的事情,不需要将位图添加到游戏缓存;一定是我想弄清楚却忘记删除的原因。
所以我需要使用 BitmapData
class。我对此唯一的一点担心(尽管我不确定这是否真的是一个问题)是当我创建 Sprite temp2
时如何给它一个位置,但当然它没有在游戏中使用,而是在输出中使用绘制精灵,然后在顶部绘制文本,bmp
作为精灵添加到游戏中。有谁知道创建第一个 Sprite
并保留它是否有任何实际意义?我只是想知道,因为从视觉上看这不是问题,因为它没有出现在 "game world".
中
此外,虽然目前这种方法对我来说似乎还不错,但我很好奇是否还有其他方法,比如更好的方法 and/or 更受欢迎?
我制作了一张 PNG 图像作为我的按钮背景。在我相关状态的 preload()
中,我加载了该图像。我想要一种方法将此图像放置在世界中并能够在其上设置文本(并且还可以单击但我想这在这里有点不重要,因为我知道如何设置事件处理程序)。
我以为我可以用
Text text = new Text(x,y,foo,style);
text.texture = <something>
但是尝试创建一个 new Texture()
在 DartEditor 中显示一个警告 "undefined class Texture",无论如何(据我所知?)Texture
似乎没有允许提供源图像 key/URL..
所以有 Phaser 经验的人可以告诉我如何获得我想要的游戏内按钮吗?
我目前似乎已经或多或少地实现了我想要的(可能需要在这里和那里调整一些值,但通常看起来还不错)使用这样的代码
class MyState
{
preload() {
//...
game.load.image('key','$assetPath/button.png');
//...
}
create() {
Sprite temp2;
temp2 = new Sprite(this.game, x, y, 'button');
BitmapData bmp = game.add.bitmapData(temp2.width, temp2.height);
bmp.draw(temp2);
//Text positioning x,y in fillText() is just my choice of course
bmp.ctx.fillText('Wait', bmp.width / 2, bmp.height / 2);
game.add.sprite(game, someX, someY, bmp);
}
}
编辑:对于我正在做的事情,不需要将位图添加到游戏缓存;一定是我想弄清楚却忘记删除的原因。
所以我需要使用 BitmapData
class。我对此唯一的一点担心(尽管我不确定这是否真的是一个问题)是当我创建 Sprite temp2
时如何给它一个位置,但当然它没有在游戏中使用,而是在输出中使用绘制精灵,然后在顶部绘制文本,bmp
作为精灵添加到游戏中。有谁知道创建第一个 Sprite
并保留它是否有任何实际意义?我只是想知道,因为从视觉上看这不是问题,因为它没有出现在 "game world".
此外,虽然目前这种方法对我来说似乎还不错,但我很好奇是否还有其他方法,比如更好的方法 and/or 更受欢迎?