按钮赢了';不要隐藏在p5javascript中

按钮赢了';不要隐藏在p5javascript中,javascript,button,p5.js,Javascript,Button,P5.js,我试图隐藏用p5.js创建的按钮时遇到问题: var quit_button; var pause = false; function keyPressed() { if (keyCode == '80') { // If p is pressed on the keyboard if (pause === true) { quit_button.hide() pause = false; } else { pause = true;

我试图隐藏用
p5.js创建的按钮时遇到问题:

var quit_button;
var pause = false;

function keyPressed() {
  if (keyCode == '80') { // If p is pressed on the keyboard
    if (pause === true) {
      quit_button.hide()
      pause = false;
    } else {
      pause = true;
    }
  }
}

function restart() {
  quit_button.hide() // This isn't working
  pause = false;
  setup()
}

function setup() { //Start-up screen
  createCanvas(600, 400);
}

function draw() {
  background('#fae'); //This creates a new canvas
  if (pause === true) {
      quit_button = createButton('quit')
      quit_button.position(300,200)
      quit_button.mousePressed(restart)
      text("Game has been paused. Press P to resume.", 100, 100)
    } else {
    }
}

当我运行代码并按
p
暂停我的蛇游戏时,游戏暂停(如预期)。但是,如果我按
p
取消暂停,或者如果我单击“退出”,则
quit
按钮仍然存在。

如果游戏暂停,则每一帧都会创建一个新按钮。那是每秒60个按钮。所以你有一堆按钮,它们相互叠在一起。要了解我的意思,请右键单击按钮,然后单击检查元素,然后查看页面上的所有按钮

因此,您需要确保只创建一个按钮。您可以通过检查
quit_按钮
是否已初始化来执行此操作,如果已初始化,则跳过创建步骤:

if(!quit_button){
  quit_button = createButton('quit')
}

您还可以将此创建代码移到开头,然后在默认情况下将其隐藏。

函数
clear()
只清除画布内容,不清除DOM。该按钮应手动隐藏。请您发布(注意,这不应是您的整个程序,但足以让我们看到问题)。您能否验证
if
语句是否按照您认为的方式执行?@webui我知道这一点。我使用了
clear()
来清除文本,但是
quit\u按钮.hide()
没有起作用job@WEB_UI请注意这是一个问题,请注意
quit_按钮.hide()行。您可以不使用额外的内置p5函数来尝试它,只是为了确保这是
.hide()
函数的错误,并知道问题所在。您确定p5.dom.js已加载到您的代码中的某个位置吗?