暂停后无法恢复游戏

时间:2019-07-11 04:55:58

标签: javascript phaser

我在暂停后恢复游戏时遇到问题。似乎该代码从不读取我的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键后游戏可以恢复。

1 个答案:

答案 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
});