2016-07-16 34 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的”。我很困惑,我正在使用相位器版本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.MainMenuGame.MainMenu.prototype位于pastebin中的第76行。

我supposе正在发生的是移相器尝试添加MainMenu作为一个新的状态,当它试图实例化,这是因为没有函数作为构造法案(它使用new时需要和失败,这就是移相器的用途内部添加状态时)。你首先定义了Game.MainMenu = function() { },它起到了构造函数的作用,但是你重写了它(你指定了其他的东西到相同的Game.MainMenu),并且碰巧Phaser不能再创建MainMenu的一个实例。

+0

检查您MainMenu.js文件中是否有任何错误 – iijb

+0

@iijb这就是我所暗示的。 –