Какова функция super () в рамках фазера? - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь сделать очень простую игру на Javascript с использованием Phaser Directory.Теперь я нашел два разных способа начать игру:

  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 голосов
/ 18 октября 2018

это принцип наследования.Метод super() - это конструкция родителя, в первом случае родитель Phraser.Game

Я могу прочитать это: https://www.adobe.com/devnet/actionscript/learning/oop-concepts/inheritance.html

0 голосов
/ 18 октября 2018

super() для суперкласса , как и в некоторых других языках программирования, таких как JAVA, - это метод, который используется для вызова родительского объекта.Как говорится, у вас также будет доступ к функциям родителя.

Чтобы полностью понять это, вам необходимо понять концепцию наследования объектов как часть парадигмы объектно-ориентированного программирования (ООП).Это может вам помочь: ООП - Наследование

Теперь подробнее по теме, эта строка:

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

0 голосов
/ 18 октября 2018

Это новая функция ES2015.super() вызывает конструктор суперкласса, в этом случае Phaser.Game.Обратите внимание, что этот синтаксис не является специфическим для Phaser Framework, но является новой функцией в более поздних версиях JavaScript.

...