我试图制作一个非常简单的游戏,但我遇到了鼠标事件的问题。我想只点击一次,整个画布将被清除,但如果我不再点击,它会继续回到原始画布。
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);
}
答案 0 :(得分:0)
如果没有看到一个完整的,有效的例子,很难确定。但是,您可能会混淆clear()
和background()
。擦除屏幕的最简单方法是调用background()
- 例如在每个draw()帧的开头。
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);
}