繁体   English   中英

如何在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中显示警告“未定义的类Texture”,并且无论如何(据我所知?) Texture似乎不允许提供源图像关键字/ 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类。 我对此唯一的担心(尽管我不确定这确实是一个问题)是如何在创建Sprite temp2时给我一个位置,但是当然它不会在游戏中使用,而是绘制图形的输出。精灵,然后在上面的文字,以bmp添加为一个精灵的游戏。 有谁知道创建第一个Sprite并将其保留为这样有什么实际意义? 我只是在想,因为从视觉上看这不是问题,因为它不在“游戏世界”中出现。

此外,虽然此方法目前对我来说似乎很好,但我是否在想是否还有其他方法,例如某种更好和/或更优选的方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM