我出于某种原因无法调用setup()

问题描述 投票:1回答:2

我不能在我的p5js项目上调用setup(),或者在启动之后将任何布尔值更改为false。

我已经尝试制作一个名为reset()的新功能,而不是调用setup()我称之为reset()但它没有用。

let x, y;
let start;
let trianglespeed;
let x1, y1, x2, y2, x3, y3;
let r;
let lost, playing, win;

function setup() {
  createCanvas(400, 400);
  r = random(900, 4000);
  x = 100 - 20;
  y = 200 - 20;
  x1 = r
  y1 = 150;
  x2 = x1 + 10;
  y2 = 180;
  x3 = x2 + 10;
  y3 = 150;
  textSize(30);
  noStroke();
  start = "Click screen to play";
  trianglespeed = 0;
  lost = false;
  playing = false;
  win = false;
}

function draw() {
  background(220);
  fill(112, 166, 255);
  text(start, 70, 100);
  fill(178, 178, 178);
  rect(x, y, 20, 20);
  fill(255, 99, 99);
  triangle(x1, y1, x2, y2, x3, y3);
  console.log(mouseX);
  x1 = x1 + trianglespeed;
  x2 = x2 + trianglespeed;
  x3 = x3 + trianglespeed;
  if (playing == true) {
    if (x1 <= 70) {
      trianglespeed = 0;
      start = "Press R to restart";
      x1 = x1;
      x2 = x1 + 10;
      x3 = x1 + 20;
      lost = true;
    }
  }
  console.log(playing, lost, win);
}

function mousePressed() {
  if (lost == false) {
    start = "";
    trianglespeed = -10;
    playing = true;
  }
  if (playing == true) {
    if (x2 >= 80 && x2 <= 100) {
      start = "you win, press R to restart";
      trianglespeed = 0;
      x1 = x1;
      x2 = x1 + 10;
      x3 = x1 + 20;
      win = true;
    }
  }
}

function KeyPressed() {
  if (keyCode == R) {
    setup();

//the problem ^^^
  }
}

我希望在按下R之后整个事情会重新启动,但事实并非如此。

告诉我我做错了什么。

javascript p5.js
2个回答
1
投票

好的问题是这个

function KeyPressed() {
  if (key == "r") {
    reset();

  }
}

按键功能上的K是大写K而不是正常大写。


1
投票

p5.j​​s说:

程序启动时会调用setup()函数一次。它用于定义初始环境属性,如屏幕大小和背景颜色,以及在程序启动时加载图像和字体等媒体。每个程序只能有一个setup()函数,在初始执行后不应再次调用。

并有一个说明

注意:在setup()中声明的变量在其他函数中是不可访问的,包括draw()。

这意味着你不能使用setup函数来重置值,因为它是用于初始化代码。

你可以看看官方页面:https://p5js.org/reference/#/p5/setup

如果要更改某些值,可以使用其他函数来处理代码。

© www.soinside.com 2019 - 2024. All rights reserved.