2016-07-16 2 views
0

В файле index.html есть все необходимые файлы JS, а затем определяется их состояние. Это то, что я видел, как люди делают онлайн, и это прекрасно работает для них.Менеджер состояния Phaser не может найти определенные состояния?

<html> 
 
<head> 
 
    <meta charset = "UTF-8"/> 
 
    <title>Test</title> 
 
    <script src = "phaser.js"></script> 
 
    <script src = "Boot.js"></script> 
 
    <script src = "Preload.js"></script> 
 
    <script src = "MainMenu.js>"></script> 
 
</head> 
 

 

 
<body> 
 
    <script type="text/javascript"> 
 
     window.onload = function(){ 
 

 
      var game = new Phaser.Game(800,600,Phaser.AUTO,''); 
 

 
      game.state.add('Boot',Game.Boot); 
 
      game.state.add('Preload',Game.Preload); 
 
      game.state.add('MainMenu',Game.MainMenu); 
 

 
      game.state.start('Boot'); 
 

 
     } 
 

 
    </script> 
 
</body> 
 
</html>

Моя проблема заключается в том, что в то время как этот код успешно меняет свое состояние от Boot.js к Preload.js, он утверждает, что не существует «Ни одно государство найдено с ключом: MainMenu». Я очень смущен, и я использую версию Phaser 2.6.1

Ради ваших усталых глаз, я включил файл Boot.js, Preload.js и файл MainMenu.js в один конкатенированный Pastebin здесь: http://pastebin.com/sJYTsCdY.

Извините, если я допустил какие-либо ошибки в отношении этикета, это моя первая публикация в StackOverflow. Любая помощь будет оценена, спасибо!

+0

Я пробовал ваш файл Pastebin, и он отлично работает. Он дает ошибки из-за не найденных ресурсов, но нет ошибки при запуске состояния MainMenu. Может быть, это связано с регистрационными именами и заглавными буквами в имени файла? В Chrome вы можете нажать 'ctrl + shift + J', чтобы увидеть журнал консоли, дает ли он какие-либо другие сообщения об ошибках? – BdR

ответ

0

Попробуйте изменить Game.MainMenu на Game.MainMenu.prototype в строке 76 в pastebin.

Происходит то, что Phaser пытается добавить MainMenu в качестве нового состояния, и когда он пытается создать его экземпляр, он терпит неудачу, потому что нет функции действовать как конструктор (что необходимо при использовании new, и это то, что использует Phaser внутренне при добавлении состояния). Вы определяете Game.MainMenu = function() { }, который сначала выступает в качестве конструктора, но затем вы переопределяете его (вы назначаете что-то еще тому же Game.MainMenu), и случается, что Phaser больше не может создавать экземпляр MainMenu.

+0

Проверьте, есть ли ошибки в файле MainMenu.js – iijb

+0

@iijb Вот что я подразумевал. –

 Смежные вопросы

  • Нет связанных вопросов^_^