我在暂停后恢复游戏时遇到问题。似乎该代码从不读取我的else语句,但我不确定如何解决它。
我尝试使用其他按键,甚至单击以暂停/继续。我也曾尝试在create函数和update循环中添加一个函数,但是我都遇到了同样的问题。
this.input.keyboard.once('keydown_ESC', function () {
if (game.scene.isActive('default')){
game.scene.pause('default');
} else {
game.scene.resume('default');
}
});
我希望第二次按esc键后游戏可以恢复。
答案 0 :(得分:0)
原因是场景完全变为非活动状态,因此其中的任何功能都不会运行。换句话说,此场景的代码无效停止运行。因此,您需要游戏的其他部分,这些部分将保持活动状态(例如正在运行),以接管“恢复”功能。没有我成为相位器3的专家,这是一种解决方法,可以通过将其放在脚本中,而不在任何场景的类或代码之外来实现。假设您定义了
var game = new Phaser.Game(config);
在名为game.html的脚本中。因此,在javascript标记内还是在该标记内:
var global_scene_paused = false;
var global_time_paused = Date.now() - 10000;
function global_pause(scene){
if(Date.now() - global_time_paused > 2000 && game.scene.isActive(scene)){
game.scene.pause(scene);
console.log('--------- global_pause called');
global_time_paused = Date.now();
global_scene_paused = scene;
}
}
// keyCode 80 : P. Will resume by pressing 'P'
document.addEventListener('keydown', function(event) {
if(event.keyCode == 80 && Date.now() - global_time_paused > 2000 && global_scene_paused) {
game.scene.resume(global_scene_paused);
console.log('+++++++++++ RESUME');
global_scene_paused = false;
global_time_paused = Date.now();
}
});
在您的场景内添加此通话,而不要暂停:
this.input.keyboard.once('keydown_ESC', function () {
global_pause('default'); //will be unpaused in game.html
});