【问题标题】:Phaser.Scene: how to make the `game` property available?Phaser.Scene:如何使“游戏”属性可用?
【发布时间】:2018-08-15 15:07:51
【问题描述】:

在 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))。

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

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

游戏:Phaser.Game

对 Phaser.Game 实例的引用。
该属性只有在场景注入映射中定义时才可用。

所以我尝试在 MyScene 构造函数中修改场景注入映射,但我现在还不太明白,我所有的尝试都不幸失败了。

为了使game 属性可用,我应该进行哪些更改?

【问题讨论】:

    标签: javascript phaser-framework


    【解决方案1】:

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

    嗨,场景有属性游戏(Phaser.Game),但它似乎是 一直未定义(在 preload、create 或 update 方法中) 场景)。 Doc 说:“只有在 场景注入映射。”我可以在默认注入映射中看到它 ...但仍未定义。

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

    使用 this.sys.game 是否正确?为什么 this.game 不工作?是 是旧版本的遗留物吗?

    来自管理员的回答:

    是的,它根本不应该暴露。我会把它从地图上删除。它 几乎不应该使用。

    【讨论】:

    • 这没有回答问题,即“我应该修改什么以使 game 可用于我的场景。” html5gamedevs 的链接帖子也没有回答。这个答案对任何有同样问题的人都没有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2019-02-03
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多