繁体   English   中英

暂停/恢复移相器游戏时如何更改文本?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM