我正在尝试使用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');
有人可以向我解释一下吗?
答案 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