如何在 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 更受欢迎?