网站地图    收藏   

主页 > canvas引擎 > Phaser游戏引擎 >

phaser3入门教程-场景切换

来源:未知    时间:2021-06-16 22:19 作者:小飞侠 阅读:

[导读] 以下代码是创建2个场景,每次点击时候切换场景,每个场景都是单独随机创建一堆元素。 场景切换代码: this.scene.start(sceneA); classSceneAextendsPhaser.Scene{constructor(){super({key:sceneA});}preload()...

切换1:

image.png

以下代码是创建2个场景,每次点击时候切换场景,每个场景都是单独随机创建一堆元素。

场景切换代码:

this.scene.start('sceneA');
class SceneA extends Phaser.Scene {

    constructor ()
    {
        super({ key: 'sceneA' });
    }

    preload ()
    {
        this.load.spritesheet('bobs', 'assets/sprites/bobs-by-cleathley.png', { frameWidth: 32, frameHeight: 32 });
    }

    create ()
    {
        for (var i = 0; i < 5000; i++)
        {    
            // 获得2者随机
            var x = Phaser.Math.Between(0, 2500);
            var y = Phaser.Math.Between(0, 2500);
            var frame = Phaser.Math.Between(0, 399);

            var bob = this.add.sprite(x, y, 'bobs', frame);

            if (i % 2)
            {
                //  Hide every other sprite, it will still be on the display list though
                bob.setVisible(false);
            }
        }

        this.add.text(10, 10, 'Scene A', { font: '16px Courier', fill: '#ffffff' });
        // 绑定鼠标抬起
        this.input.once('pointerup', function () {
            //切换场景sceneB
            this.scene.start('sceneB');

        }, this);
    }

}

class SceneB extends Phaser.Scene {

    constructor ()
    {
        super({ key: 'sceneB' });
    }

    create ()
    {
        for (var i = 0; i < 5000; i++)
        {
            var x = Phaser.Math.Between(0, 2500);
            var y = Phaser.Math.Between(0, 2500);
            var frame = Phaser.Math.Between(0, 399);

            var bob = this.add.sprite(x, y, 'bobs', frame);

            if (i % 2)
            {
                //  Hide every other sprite, it will still be on the display list though
                bob.setVisible(false);
            }
        }

        this.add.text(10, 10, 'Scene B', { font: '16px Courier', fill: '#ffffff' });

        this.input.once('pointerup', function () {

            this.scene.start('sceneA');

        }, this);
    }

}

var config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    backgroundColor: '#000000',
    parent: 'phaser-example',
    scene: [ SceneA, SceneB ]
};

var game = new Phaser.Game(config);

切换2:

此方式与1不同在于,this.scene.add('myScene', MyScene, true, { x: 400, y: 300 }); 调用此方法添加场景队列自动执行。

image.png

点击切换

image.png

class MyScene extends Phaser.Scene {
    preload ()
    {
        this.load.image('face', 'assets/pics/bw-face.png');
    }
    create (data)
    {
        this.face = this.add.image(data.x, data.y, 'face');
    }
}
class BootScene extends Phaser.Scene {
    create ()
    {
        this.add.text(0, 0, 'Click to add new Scene');
        this.input.once('pointerdown', function () {
        
            this.scene.add('myScene', MyScene, true, { x: 400, y: 300 });
        }, this);
    }
}
var config = {
    type: Phaser.AUTO,
    parent: 'phaser-example',
    width: 800,
    height: 600,
    scene: BootScene
};
var game = new Phaser.Game(config);

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论