我不能在我的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之后整个事情会重新启动,但事实并非如此。
告诉我我做错了什么。
好的问题是这个
function KeyPressed() {
if (key == "r") {
reset();
}
}
按键功能上的K是大写K而不是正常大写。
p5.js说:
程序启动时会调用setup()函数一次。它用于定义初始环境属性,如屏幕大小和背景颜色,以及在程序启动时加载图像和字体等媒体。每个程序只能有一个setup()函数,在初始执行后不应再次调用。
并有一个说明
注意:在setup()中声明的变量在其他函数中是不可访问的,包括draw()。
这意味着你不能使用setup
函数来重置值,因为它是用于初始化代码。
你可以看看官方页面:https://p5js.org/reference/#/p5/setup
如果要更改某些值,可以使用其他函数来处理代码。