Processing 从p5js渲染器中清除createGraphics()画布

Processing 从p5js渲染器中清除createGraphics()画布,processing,p5.js,Processing,P5.js,p5js有一个clear()函数,用于清除屏幕上的所有内容。我想保留createCanvas()创建的画布,但只清除createGraphics()一个。我该怎么做 //something like this var canvas2; function setup() { createCanvas(400, 400); canvas2 = createGraphics(400,400); canvas2.clear() noLoop() } function draw() {

p5js有一个clear()函数,用于清除屏幕上的所有内容。我想保留createCanvas()创建的画布,但只清除createGraphics()一个。我该怎么做

//something like this
var canvas2;
function setup() {
  createCanvas(400, 400);
  canvas2 = createGraphics(400,400);
  canvas2.clear()
  noLoop()
}

function draw() {
  fill(255,0,0)
  rect(60,60,40,40)
  canvas2.fill(20,44,240);
  canvas2.rect(20,20,40,40);
  image(canvas2,0,0)
}

function mousePressed() {
  //something which clears the createGraphics() canvas only and keeps the createCanvas() one
}

可以使用图形对象的
clear()
函数清除图形对象的内容。下面是一个例子:

var canvas2;
函数设置(){
createCanvas(400400);
canvas2=createGraphics(400400);
画布2.填充(20,44240);
canvas2.rect(20,20,40,40);
}
函数绘图(){
背景(255);
填充(255,0,0)
rect(60,60,40,40)
图像(画布2,0,0)
}
函数mousePressed(){
canvas2.clear();
}

我将
canvas2.rect(20,20,40,40)
调用移动到
setup()
函数中,因为如果不这样,即使清除它,也会重新绘制到画布上。我还删除了你的
noLoop()
调用,这样你就可以看到清理画布的结果。

你能发布一个显示你正在尝试做什么的帖子吗?谢谢!有没有办法用noLoop()实现这一点,就像我实现它的方式一样?这只是我试图做的一小部分,我需要noLoop()。@Sandler2k1您可以将对
noLoop()
的调用移动到
draw()
函数的末尾,然后从
mousePressed()
调用
loop()
。这样,当您单击鼠标时,您会触发另一个帧,但不会继续绘制其他帧。@Sandler2k1您可以使用该方法调用
draw()
,而不使用looping@Dietrich我以前从未见过这个功能,这是一个很酷的提示!