Phaser.Scene:如何使“游戏”属性可用?

时间:2018-08-15 05:59:04

标签: javascript phaser-framework

在webpack / babel环境中,我运行了一个与此类似的示例(可在Phaser 3 Sandbox中找到);我刚刚添加了console.log(this)并删除了图像load()add()

class MyScene extends Phaser.Scene {
    constructor (config)
    {
        super(config);
    }

    preload ()
    {
        console.log(this);
    }

    create ()
    {
    }
}

var config = {
    type: Phaser.WEBGL,
    width: 800,
    height: 600,
    backgroundColor: '#000000',
    parent: 'phaser-example',
    scene: MyScene
};

var game = new Phaser.Game(config);

它可以工作,但是我自己的本地示例和在线Phaser 3沙箱之间有一个区别:

  • 在我的本地示例中,game实例中没有MyScene属性;
  • 在在线沙箱中,我可以看到此属性存在(通过添加相同的console.log(this))。

我注意到我可以使用Game来获得Phaser.Scene.sys.game实例,但是我想知道为什么在在线沙箱和我自己的示例之间没有相同的结果对象。

您可以在Phaser 3 API Documentation中阅读有关Phaser.Scene.game的内容:

  

game:Phaser.Game

     

对Phaser.Game实例的引用。
  只有在“场景注入贴图”中定义了此属性。

因此,我尝试在MyScene构造函数中修改“场景注入贴图”,但目前我还不是很了解,我所有的尝试都失败了。

要使game属性可用,我应该更改什么?

1 个答案:

答案 0 :(得分:0)

我刚刚发现this post似乎可以回答这个问题:

  

嗨,场景有属性游戏(Phaser.Game),但似乎   一直未定义(在预加载,创建或更新   现场)。 Doc说:“只有在   “场景注入图”。我可以在默认注入图中看到它   ...但仍未定义。

     

另一方面,具有游戏属性的sys属性(对象)   在里面。我可以得到像this.sys.game这样的游戏参考,而不是   这个游戏。

     

使用this.sys.game是否正确?为什么此游戏不起作用?是   它是旧版本的剩余部分?

管理员回答:

  

是的,它根本不应该公开。我将其从地图上删除。它   应该永远不要使用。