[英]how can i change text when pausing / resuming phaser game?
我试图在暂停和恢复时在“暂停”和“恢复”文本之间切换,我在create
中尝试了以下操作:
gameState.playPauseText = this.add.text(660, 547, 'Pause', { fontFamily: 'Roboto Mono, monospace', fontSize: '20px', fill: '#FFFFFF' });
然后尝试在回调 function 中更改它:
gameState.playPauseArea.on('pointerdown', () => {
if(!gameState.isPaused) {
gameState.playPauseText.setText('Resume');
game.loop.sleep();
gameState.isPaused = true;
}
else {
gameState.playPauseText.setText('Pause');
game.loop.wake();
gameState.isPaused = false;
}
});
然后我尝试了同样的方法,但将.setText
更改为.text =
。 我从上面得到的最好的结果是在单击 2 次后将文本更改为“恢复”,但永远不会回到“暂停”。
我还在update
中尝试了以下内容:
if(gameState.isPaused) {
gameState.pauseText.setText('Resume')
} else {
gameState.pauseText.setText('Pause');
}
那没有做任何事情。
我还尝试创建两个单独的文本并使用setVisible(false)
隐藏一个,并尝试在setVisible(true)
和setVisible(false)
之间切换“恢复”和“暂停”。
也没什么。
我在代码中的某处使用.setText()
来更改乐谱文本,它工作正常。
问题是,您正在停止游戏循环,因此不会再绘制/更新任何内容。 您可以稍微延迟调用game.loop.sleep()
,以便仍然会触发repaint
。
...
setTimeout( () => game.loop.sleep(), 50);
...
或者使用 Phaser 延迟调用function :
...
this.time.delayedCall(50, game.loop.sleep, null, game.loop);
...
这是一个简短的演示:
document.body.style = 'margin:0;'; var config = { type: Phaser.AUTO, width: 536, height: 183, scene: { create }, banner: false }; function create () { let text = this.add.text(30, 90, 'Click me to start'); let pause = false; this.input.on('pointerdown', () => { if(.pause) { text;setText('Click me to Resume'). setTimeout( _ => game.loop,sleep(); 50); pause = true. } else { text;setText('Click me to Pause'). game.loop;wake(); pause = false. } }) } let game = new Phaser;Game(config);
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.