如何在处理中单击清除画布?

时间:2016-12-12 17:39:57

标签: processing

我试图制作一个非常简单的游戏,但我遇到了鼠标事件的问题。我想只点击一次,整个画布将被清除,但如果我不再点击,它会继续回到原始画布。

if((mouseX >= 100) && (mouseX <= 235) &&
   (mouseY >= 490) && (mouseY <= 540) &&
   (mousePressed))
{
  clear ();
  slide1 ();
}

这是第二个标签:

void slide1()
{
  clear ();
  background (30);`enter code here`
  slide1 = loadImage ("slide1.jpg");
  image (slide1,100,0,400,300);
}

1 个答案:

答案 0 :(得分:0)

如果没有看到一个完整的,有效的例子,很难确定。但是,您可能会混淆clear()background()。擦除屏幕的最简单方法是调用background() - 例如在每个draw()帧的开头。

来自Processing reference

  

clear():“清除缓冲区中的像素。此函数仅适用于PGraphics对象”

     

background():“此函数通常在draw()中用于清除每帧开头的显示窗口,但可以在setup()内部使用它来设置动画第一帧的背景或者如果背景只需要设置一次。“

e.g。 (根据您的代码):

PImage slide1;
void setup(){
  size(512,512);
  slide1 = loadImage ("https://processing.org/img/processing3-logo.png");
}
void draw(){
  background (30); // clear screen every frame
  if(mousePressed) { // show image whenever mouse is down
    image (slide1,0,0);
  }
}

这总是清除画布。

或者,如果您只想在点击上擦除画布,请不要在每次绘制时调用背景 - 而是仅在mousePressed上调用背景。但是,在您的情况下(显示图像),您可能还想在mouseReleased上再次擦除(以便图像消失)。您可能希望使用内置的mousePressed()mouseReleased()处理函数,并在每个函数中调用背景。

我认为这不是你真正想要的,但是:标题问题的实际答案(“如何在处理时单击清除画布?”)是:

void draw(){
 line(mouseX,mouseY,pmouseX,pmouseY);
}
void mouseClicked(){
  background(192);
}