2015-04-08 1 views
0

Я пытаюсь перейти к состоянию главного меню в phaser через функцию, но не смог заставить ее работать. Ниже приведен фрагмент кода. Функция конца вызывается из функции обновления в файле game.js.Как переключить состояния в работе фейзера?

end: function(){ 
    player.kill(); 
    ltext.setText("Over!!"); 
    this.state.start('Menu'); 
}, 

ответ

1

Лучше не вызывать эту функцию из функции обновления.

Вместо этого, вы можете вызвать его из спрайтов или кнопки обработчик событий и т.д.

я тестировал game.state.start («хх») в функции обновления, и она работала, как ожидалось.

window.addEventListener('load', function(){ 
 
\t var game = new Phaser.Game(500, 190, Phaser.CANVAS, '', { 
 
\t \t create : function (game) { 
 
\t \t  var textStyle = { font: "14px Arial", fill: "#ffcc00" }; 
 
\t \t  game.add.text(60, 40, 'Phaser HTML5 Game Engine', textStyle); 
 
\t \t  game.add.text(60, 70, 'This is state 1', textStyle); 
 
      
 
\t \t  var textStyle = { font: "14px Arial", fill: "#00ff00"}; 
 
\t \t  game.add.text(200, 130, 'Pointer here to enter state2', textStyle); 
 
\t \t  var graphics = game.add.graphics(0, 0); 
 
\t \t  graphics.beginFill(0x00ff00); 
 
\t \t  graphics.drawRect(200, 80, 50, 50); 
 
\t \t  graphics.endFill(); 
 
\t  }, 
 
\t \t update : function (game) { 
 
\t \t  var x = game.input.x, y = game.input.y; 
 
\t \t  if(x > 200 && x < 250 && y > 80 && y < 130){ 
 
\t \t \t  game.state.start('state2'); 
 
\t \t  } 
 
\t  } 
 
\t }); 
 

 
\t game.state.add('state2', { 
 
\t \t create: function (game){ 
 
\t \t \t var textStyle = { font: "14px Arial", fill: "#00ff00"}; 
 
\t \t  game.add.text(60, 40, 'Phaser HTML5 Game Engine', textStyle); 
 
\t \t  game.add.text(60, 70, 'Welcome to state 2', textStyle); 
 
\t \t } 
 
\t }); 
 
}, false);
body{text-align:center;margin:4px;padding:0;} 
 
canvas{vertical-align:middle; background-color:#000;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/2.3.0/phaser.min.js"></script>

+0

в моей функции обновления я объявил функцию, чтобы постоянно проверять, если игрок забил определенный результат, чтобы достичь следующего уровня, но если я не могу использовать государственный менеджер в функции обновления, то как я могу возможно, перейти на следующий уровень? –

+0

Я протестировал state.start в функции обновления, и он работал, как ожидалось. Возможно, ваш код имеет другие проблемы. например, ** это ** является или нет игровым экземпляром. Не могли бы вы вставить больше кода? – cuixiping

+0

Я создал свое другое состояние в отдельном файле javascript, в отличие от того же js-файла –

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