Phaser - возникают проблемы со ссылкой на «this» в стартовом проекте - PullRequest
0 голосов
/ 30 марта 2020

Проблема

Я новичок в Phaser. Я начинаю разрабатывать свою первую настоящую игру, и уже столкнулся с серьезным препятствием. В частности, я получаю ошибки, связанные с «этим» везде, куда я обращаюсь.

Мой метод обучения

Прежде чем я попаду в специфику c ошибки, я просто хочу объяснить мой процесс проектирования. В основном, найдите учебник или фрагмент кода, и возьмите его, и попробуйте использовать его в моей игре. Изучая этот путь, я думаю, что сталкиваюсь с проблемами, потому что мой шаблон кодирования не такой, как в учебнике или примере, который я пытаюсь воспроизвести. Некоторые люди используют расширяющие классы Phaser, другие вообще не используют классы - и я думаю, что это может быть root моих проблем.

«Это» - моя боль

Вот несколько конкретных c ошибок кодирования, с которыми я сталкиваюсь в моем проекте:

1. Создание обработчика по нажатию В моей игре мне нужно будет запускать функцию при нажатии на сцену.

  // in my create event

  this.input.on('pointerdown', function (pointer) {
      console.log(pointer);
  })

Результаты:

Input Problem

2. Изменение курсора Я просто хочу изменить курсор.

    // In my create event

    this.input.setDefaultCursor('url(assets/cursors/hand.cur), pointer');

Результаты:

Cursor Problem

В этот момент я понимаю, что что-то не так в моем стиле кодирования.

Прежде чем я продвинусь слишком далеко, мне нужно выяснить, что я делаю неправильно.

Исходный код

BasicGame.Game = function (game) {

};

var ourGame;

BasicGame.Game.prototype = {

  create: function () {

    // Dont work
    //var allScenes = this.Scene.scenes;

    // Dont work
    this.input.setDefaultCursor('url(assets/cursors/hand.cur), pointer');

    // Dont work
    //this.input.on('pointerdown', function (pointer) {
      //console.log(pointer);
   // })

    //console.log(allScenes);

    // This DOES work
    this.setupText();


  },

  update: function () {

  },

  //---------------------------
  // CREATE RELATED FUNCTIONS
  //---------------------------
  setupText: function () {
    this.instructions = this.add.text(
      this.game.width / 4,
      this.game.height - 100,
      'Use Arrow Keys to Move, Press Z to Fire\n' +
      'JOHNNY/clicking does both', {
        font: '20px monospace',
        fill: '#fff',
        align: 'center'
      }
    );
  }



  //---------------------------
  // UPDATE RELATED FUNCTIONS
  //---------------------------




};

1 Ответ

0 голосов
/ 02 апреля 2020

Я пытаюсь принять оба комментария, но не знаю как. Я заглянул в docs и console.log (this) и обнаружил, что не правильно ссылаюсь на класс Phaser, что подтверждается обоими комментариями. Так что я заработал, правильно сославшись на класс Phaser. Я использовал сам = это; Хитрость

...