Build games as easily as you play them — join the Phaser Beam waitlist for Early Access.
                
            
            class Example extends Phaser.Scene { preload () { this.load.setBaseURL('https://cdn.phaserfiles.com/v385'); this.load.image('bg', 'assets/skies/darkstone.png'); this.load.atlas('ui', 'assets/ui/dark-ui.png', 'assets/ui/dark-ui.json'); } create () { this.add.image(400, 300, 'bg'); this.currentSwitch = null; // Create a bunch of toggles for (let i = 0; i < 8; i++) { const x = (i < 4) ? 200 : 600; const y = (i % 4) * 140 + 100; const sprite = this.add.sprite(x, y, 'ui', 'toggle-off').setInteractive(); sprite.on('pointerdown', (pointer, x, y, event) => { if (this.currentSwitch) { this.currentSwitch.setFrame('toggle-off'); } if (this.currentSwitch === sprite) { this.currentSwitch = null; } else { this.currentSwitch = sprite; sprite.setFrame('toggle-on'); } event.stopPropagation(); }); } // Clicking anywhere else in the game will deselect the current switch this.input.on('pointerdown', () => { if (this.currentSwitch) { this.currentSwitch.setFrame('toggle-off'); this.currentSwitch = null; } }); } } const config = { type: Phaser.AUTO, parent: 'phaser-example', width: 800, height: 600, scene: Example }; const game = new Phaser.Game(config);
class Example extends Phaser.Scene
{
    preload ()
    {
        this.load.setBaseURL('https://cdn.phaserfiles.com/v385');
        this.load.image('bg', 'assets/skies/darkstone.png');
        this.load.atlas('ui', 'assets/ui/dark-ui.png', 'assets/ui/dark-ui.json');
    }
    create ()
    {
        this.add.image(400, 300, 'bg');
        this.currentSwitch = null;
        //  Create a bunch of toggles
        for (let i = 0; i < 8; i++)
        {
            const x = (i < 4) ? 200 : 600;
            const y = (i % 4) * 140 + 100;
            const sprite = this.add.sprite(x, y, 'ui', 'toggle-off').setInteractive();
            sprite.on('pointerdown', (pointer, x, y, event) => {
                if (this.currentSwitch)
                {
                    this.currentSwitch.setFrame('toggle-off');
                }
                if (this.currentSwitch === sprite)
                {
                    this.currentSwitch = null;
                }
                else
                {
                    this.currentSwitch = sprite;
                    sprite.setFrame('toggle-on');
                }
                event.stopPropagation();
            });
        }
        //  Clicking anywhere else in the game will deselect the current switch
        this.input.on('pointerdown', () => {
            if (this.currentSwitch)
            {
                this.currentSwitch.setFrame('toggle-off');
                this.currentSwitch = null;
            }
        });
    }
}
const config = {
    type: Phaser.AUTO,
    parent: 'phaser-example',
    width: 800,
    height: 600,
    scene: Example
};
const game = new Phaser.Game(config);