由于某种原因,我无法致电setup()

时间:2019-04-27 13:26:43

标签: javascript p5.js

事情开始后,我无法在我的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键后,整个过程会重新启动,但不会重新启动。

告诉我我做错了。

2 个答案:

答案 0 :(得分:1)

p5.js说:

  

在程序启动时会调用一次setup()函数。用过的   定义初始环境属性,例如屏幕尺寸和   背景颜色并加载诸如图像和字体之类的媒体作为   程序启动。每个设置只能有一个setup()函数   程序,并且在其初始执行后不应再次调用。

并有一个注释

  

注意:在setup()中声明的变量无法在   其他功能,包括draw()。

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

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

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

答案 1 :(得分:1)

好,问题是这样

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

  }
}

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