Processing 从p5js渲染器中清除createGraphics()画布
p5js有一个clear()函数,用于清除屏幕上的所有内容。我想保留createCanvas()创建的画布,但只清除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() {
//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我以前从未见过这个功能,这是一个很酷的提示!