Phaser3 многократные сцены Issus.«Uncaught ReferenceError: loadScene не определен в config.js: 17» - PullRequest
0 голосов
/ 27 мая 2019

Я хочу сделать игру в Phaser3 с несколькими сценами. Когда я пытаюсь запустить код с помощью «cordova run browser», он отображает серый экран, и в консоли проверки кода появляется сообщение об ошибке: «Uncaught ReferenceError: loadScene не определен в config.js: 19».

// Я связал все файлы в index.html

   <script type="text/javascript" src="./js/config.js"></script>
   <script type="text/javascript" src="./js/helpers.js"></script>
   <script type="text/javascript" src="./js/loadScene.js"></script>
   <script type="text/javascript" src="./js/mainMenu.js"></script>
   <script type="text/javascript" src="./js/gamePlay.js"></script>
   <script type="text/javascript" src="./js/gameOver.js"></script>```

// set the configuration file config.js 

const gameState = {
   score: 0
};

const config = {
   type: Phaser.AUTO,
   width: 800,
   height: 1368,
   physics: {
       default: 'arcade',
       arcade: { debug: true }
   },
   scene: [loadScene, mainMenu, gamePlay, gameOver] //**here a get the error**
};

const game = new Phaser.Game(config);


// loadScene.js is one of the scenes

class loadScene extends Phaser.Scene {

     constructor() { super({ key: 'loadScene' }); }

     preload() {
         this.load.image('background', '../img/BG/bgVstretch.png');
     }

     create() {
         window.addEventListener('resize', resize);
         resize();

         this.add.image(0, 0, 'background').setOrigin(0);

         this.add.text(100, 100, "Loading Scene", { font: "20px Impact" });

         this.input.on('pointerdown', () => {
             this.scene.stop('loadScene');
             this.scene.start('mainMenu');
         });
     }
 }

// mainMenu.js gamePlay.js gameOver.js....have the same structure as loadScene.js

// helpers.js contains the functions that resizes the game according to the screen.

function resize() {
   var canvas = gameState.game.canvas,
       width = window.innerWidth,
       height = window.innerHeight;
   var wratio = width / height,
       ratio = canvas.width / canvas.height;`

  `if (wratio < ratio) {
       canvas.style.width = width + "px";
       canvas.style.height = (width / ratio) + "px";
  } else {
       canvas.style.width = (height * ratio) + "px";
       canvas.style.height = height + "px";
   }
}```

The game does not render. For now I just wanted it to switch from one scene to another on pointerdown.

1 Ответ

0 голосов
/ 24 июля 2019

если вы хотите переключить сцены для меня, следующий код сработал

`this.scene.switch('whatever the key is')`

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

   `advanceButton.setInteractive();          
        advanceButton.on('pointerup', ()=>{
         this.scene.switch('level2')
         })
        });`

, почему ваш код не рендерит, удалите точку с запятой после того, как вы закончите клавишу

...