Phaser 2 had a very convenient way of adding buttons to a state. Phaser 3 has got rid of those buttons but if we want to keep the habit of adding buttons in Phaser 3 scenes like we used to in Phaser 2, following lines will help achieve it.
Phaser.Scene.prototype.addButton = function (x, y, key, callback, callbackContext, overFrame, outFrame, downFrame) { // add a button let btn = this.add.sprite(x, y, key, outFrame).setInteractive(); btn.on('pointerover', function (ptr, x, y) { this.setFrame(overFrame); }); btn.on('pointerout', function (ptr) { this.setFrame(outFrame); }); btn.on('pointerdown', function (ptr) { this.setFrame(downFrame); }); btn.on('pointerup', callback.bind(callbackContext, btn)); return btn; };
Above piece of code can now be used
var button = this.addButton(100, 100, 'buttons', this.clickButton, this, overFrame, outFrame, downFrame);
clickButton event can be defined as following
clickButton(button) { // use this to access scene // button is also available as the first param }