相移器框架中super()的功能是什么?

时间:2018-10-17 22:02:12

标签: javascript phaser-framework

我正在尝试使用Phaser Directory用Javascript制作一个非常基本的游戏。现在,我发现了两种开始构建游戏的方法:

  class Game extends Phaser.Game {
constructor() {
  super(800, 800, Phaser.AUTO, 'game-container');

  this.state.add('Boot',         Boot);
  this.state.add('Preload',      Preload);
  this.state.add('Menu',         Menu);
  this.state.add('SelectMap',    SelectMap);

  this.state.start('Boot');

   }
}

new Game();

和第二个:

function () {
var game = new Phaser.Game(800, 450, Phaser.AUTO, 'gameContainer', null, false, false);

game.state.add('Boot',          Boot);
game.state.add('Preload',       Preload);
game.state.add('Menu',          Menu);
game.state.add('Game',          Game);

    game.state.start('Boot')
}

我能够理解第二部分的工作原理,但是在第一部分中,我不了解这一部分:

super(800, 800, Phaser.AUTO, 'game-container');

有人可以向我解释一下吗?

3 个答案:

答案 0 :(得分:0)

这是ES2015的新功能。 super()调用超类的构造函数,在这种情况下为Phaser.Game。请注意,此语法并非特定于Phaser Framework,而是JavaScript的最新版本中的新功能。

答案 1 :(得分:0)

这是继承的原则。 super()方法是父级为Phraser.Game

的第一个父级的构造。

我可以阅读:https://www.adobe.com/devnet/actionscript/learning/oop-concepts/inheritance.html

答案 2 :(得分:0)

超级类

super()就像其他几种编程语言(例如JAVA)一样,是一种用于调用对象父对象的方法。话虽如此,您也可以使用父母的功能。

要完全理解这一点,您需要了解对象继承的概念,并将其作为面向对象编程(OOP)范例的一部分。这可以为您提供帮助:OOP - Inheritance

现在,关于这一主题的更多信息,

super(800, 800, Phaser.AUTO, 'game-container');

它如何工作? Phaser.Game继承自Phaser,这意味着Phaser.Game将从Phaser继承所有属性。这样,我们将不得不再次初始化Phaser中的所有属性。相反,我们实际上将调用父类的构造函数,即Phaser并让它为我们完成。然后,我们将初始化Phaser.Game的新属性。

请注意,此方法不仅限于Phaser,它还是Javascript的一部分。 在Google上进行快速搜索将提示您以下内容: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super