为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Phaser 3 中重新启动游戏?

如何在 Phaser 3 中重新启动游戏?

有只小跳蛙 2023-04-01 15:38:10
我是 Phaser 3 和游戏开发的新手,然后我遇到了问题。我正在尝试重新启动游戏场景,但是当我运行它时出现错误消息“Uncaught TypeError: this.scene.restart is not a function”var playbtn = this.add.dom(390, 600).createFromCache('play-btn');    playbtn.setPerspective(600);    playbtn.addListener('click');    playbtn.on('click', function (event) {        this.scene.restart();    });这是我的全部代码<!doctype html> <html> <head>     <meta charset="UTF-8" />    <title>Making your first Phaser 3 Game - Part 10</title>    <script src="https://cdn.jsdelivr.net/npm/phaser@3.24.1/dist/phaser.js"></script>    <style type="text/css">        body {            margin: 0;        }    </style></head><body><script type="text/javascript">var config = {    type: Phaser.AUTO,    width: 800,    height: 600,    parent: 'phaser-example',    physics: {        default: 'arcade',        arcade: {            gravity: { y: 300 },            debug: false        }    },    dom: {        createContainer: true    },    scene: {        preload: preload,        create: create,        update: update,        hitbomb: hitBomb    }};var game = new Phaser.Game(config);var player;var stars;var bombs;var platforms;var cursors;var score = 0;var gameOver = false;var scoreText;var level_state;var level = 1;var de_star = 0;var element;var playbtn;function preload (){    this.load.image('sky', 'assets/sky.png');    this.load.image('ground', 'assets/platform.png');    this.load.image('star', 'assets/bomb.png');    this.load.image('bomb', 'assets/star.png');    this.load.spritesheet('dude', 'assets/dude.png', { frameWidth: 32, frameHeight: 48 });    this.load.html('play-btn', 'assets/play.html');    this.load.html('nameform', 'assets/loginform.html');   }当角色击中炸弹时,“再玩一次”按钮会弹出,如果玩家点击该按钮,游戏将重新开始。这些是我的目标......我正在从事的项目是一个教程示例,但任何建议或解决方案都会对我有很大帮助。谢谢
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

这是this.


你可以用粗箭头


    playbtn.on('click', (event) => {

        this.scene.restart();

    });

或者您可以将上下文传递给“on”函数,我认为这是查看您的代码的“游戏”。


    playbtn.on('click', function (event) {

        this.scene.restart();

    }, game);

这是 Phaser 的文档中的一个片段on


    /**

     * Add a listener for a given event.

     * @param event The event name.

     * @param fn The listener function.

     * @param context The context to invoke the listener with. Default this.

     */

    on(event: string | symbol, fn: Function, context?: any): this;


查看完整回答
反对 回复 2023-04-01
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我对 Phaser 不是很熟悉,但this事件处理程序里面可能指的是按钮。使用粗箭头将处理函数绑定到this周围范围:


    playbtn.on('click', (event) => {

        this.scene.restart();

    });


查看完整回答
反对 回复 2023-04-01
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信