I'm trying to toggle between 'Pause' and 'Resume' text when pausing and resuming, i tried the following in create
:
gameState.playPauseText = this.add.text(660, 547, 'Pause', { fontFamily: 'Roboto Mono, monospace', fontSize: '20px', fill: '#FFFFFF' });
then tried changing that inside a callback 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;
}
});
then i tried same, but changed .setText
to .text =
. The best i got from all above is to change text to 'Resume' after 2 clicks, but never back to 'Pause'.
I also tried the following in update
:
if(gameState.isPaused) {
gameState.pauseText.setText('Resume')
} else {
gameState.pauseText.setText('Pause');
}
that didn't do anything.
I also tried creating two separate texts and hiding one with setVisible(false)
and tried all of the above toggling both 'Resume' and 'Pause' between setVisible(true)
and setVisible(false)
.
also nothing.
I use .setText()
somewhere in my code, to change score text and it works fine.
The problem is, that you are stopping the game loop , so nothing is going to be painted/updated any more. You could call the game.loop.sleep()
with abit of delay, so that a repaint
, will still be triggert.
...
setTimeout( () => game.loop.sleep(), 50);
...
Or with the Phaser delayedCall function:
...
this.time.delayedCall(50, game.loop.sleep, null, game.loop);
...
here a short demo:
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>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.