Консольные выводы Uncaught TypeError для .add в JavaScript - PullRequest
0 голосов
/ 01 января 2019

Я делаю 2D платформерную игру, в которой я использую Phaser-framework (версия 3.15.1), чтобы упростить жизнь, и плиточную карту для первого уровня игры.Я экспортировал карту из Tiled в виде файла .json и прочитал основной файл JS.Однако в моем индексном HTML-файле, из которого запускаются все файлы JS, возникает следующая ошибка:

Uncaught TypeError: Cannot read 
property 'add' of index.html:17 undefined 
at index.html:17
at index.html:20

Вот соответствующий код:

<head>
    <meta charset="UTF-8">
    <title>Nightly Neighbours Using Phaser</title>
    <script type="text/javascript" src = "js/phaser.js"></script>
    <script type="text/javascript" src = "js/phaser-arcade-physics.js"> 
    </script>
        <script type="text/javascript" src = "js/Boot.js"></script>
        <script type="text/javascript" src = "js/Preload.js"></script>
        <script 
type="text/javascript"src="js/NightlyNeighbours1WithPhaser.js"> 
   </script>
        <script type="text/javascript">
            (function() {
                game = new Phaser.Game(window.innerWidth * 
                window.devicePixelRatio, 
                window.innerHeight * window.devicePixelRatio, Phaser.AUTO);
                game.state.add("Boot", Boot);
                game.state.add("Preload", Preload);
                game.state.add("NightlyNeighbours1WithPhaser", Main);
                game.state.start("Boot");
            })();
        </script>
</head>

ошибка относится к lines 17 - 20

Большое спасибо!

1 Ответ

0 голосов
/ 02 января 2019

В Phaser 3 произошел переход от использования state s вместо использования scene s.Исходя из вашего кода, похоже, что вы используете код Phaser 2 с библиотекой Phaser 3.

Существует большое официальное руководство (с Part 5 , начинающимся с аспекта кода, так как оно появляетсявы, возможно, уже настроили свою среду), которая охватывает Phaser 3.

Из этого руководства определение Phaser.Game выглядит примерно так:

var config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    physics: {
        default: 'arcade',
        arcade: {
            gravity: { y: 200 }
        }
    },
    scene: {
        preload: preload,
        create: create
    }
};

var game = new Phaser.Game(config);

Вы также можете добавить новыйсцены к игре, позвонив по номеру game.scene.add(...).

...