如何在Phaser中制作游戏内按钮(带文字)?

时间:2015-03-11 11:39:11

标签: dart phaser-framework

我制作了一个PNG图像,这将是我的按钮背景。在我相关状态的preload()中,我加载了该图像。我希望有一种方法可以将这个图像放在世界中并且能够将文本设置到它上面(并且也可以点击但我想这里有点不重要因为我知道如何设置事件处理程序)。

我以为我可以管理一些东西

Text text = new Text(x,y,foo,style);
text.texture = <something>

但是,例如,尝试创建一个new Texture()显示警告&#34;未定义的类纹理&#34;在DartEditor中,无论如何(据我所知?)Texture似乎不允许给出源图像密钥/ URL ..

所有有Phaser经验的人都可以告诉我如何获得我想要的游戏内按钮?

1 个答案:

答案 0 :(得分:1)

我目前似乎已经或多或少地实现了我想要的东西(可能必须在这里和那里调整一些值,但通常看起来还不错)使用这样的代码

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类。我对此的唯一关注(虽然我不确定它确实是一个问题)是我在创建Sprite temp2时如何给它一个位置,但当然它没有在游戏中使用,而是绘制精灵的输出,然后将文本放在顶部,bmp作为精灵添加到游戏中。是否有人知道创建第一个Sprite是否有任何真正的含义并将其保留下来?我只是想知道,因为它看起来不是问题,因为它没有出现在游戏世界中#34;。

此外,虽然这种方法对我来说似乎很好,但我很好奇是否有其他方式,比如其他方式更好和/或更优先?