加载图像鼠标点击 - 处理/ Java

时间:2015-01-11 14:10:47

标签: java processing

我正在尝试编写简单的代码(我使用Processing和Java的前几个小时),它将显示类似于Rubin花瓶的负像。那是2面或一个花瓶吗?

我有加载第一张图片的代码(黑色面孔/白色花瓶)。

    PImage img;
void setup () {
  size (1000, 480);
 img = loadImage ("vaseedit.jpg");
}

void draw () {
  background(180,180,180);
  image(img,0,0);
}

如何在鼠标单击时加载第二张图像?我试过了,但没有接近实现

a)单击第二张图像。另一个点击它消失等等

b)按住鼠标按钮时显示第二张图像

我最接近切换图像的代码,但它不会运行,是

PImage img,imageinverse;
void setup () {
  size (1000, 480);
 img = loadImage ("vaseedit.jpg");
 imageinverse = loadImage ("vaseeditinverse.jpg");

 int value = 0;
}

void draw () {
  background(0,0,0);
  image(img,0,0);

}

void mousePressed () {
  if(value == 0) {
    image (imageinverse, 0,0);

  } else {

    image(img,0,0);

  }

}

1 个答案:

答案 0 :(得分:2)

你快到了。为了将来参考,您应该始终包含您遇到的任何错误的确切文本,以及它们所在的行。

请注意,您在setup()函数中声明了value变量,因此一旦设置函数退出,它就会超出范围。阅读有关范围here的教程。

您也永远不会更改值变量。因此,即使您在草图顶部声明了值变量,因此在mousePressed()函数中它仍然是在范围中,if语句将始终求值为true。详细了解如何随时修改变量here

即使您解决了这两个问题,只要按下按钮,每次鼠标单击只会调用一次mousePressed()函数。因此,当您按下鼠标时,您正在绘制图像。但是,您还在draw()函数中绘制图像,每秒调用60次。这意味着您在按下鼠标时绘制图像,但是在1/60秒之后,您在其上方绘制了不同的图像。

相反,只需在mousePressed()函数中设置value变量,然后从draw()函数中引用该变量来决定要绘制哪个图像。

这是一个小例子来决定绘制哪种颜色:

int value = 0;

void draw(){
  if(value == 0){
    background(0, 0, 0);
  }
  else if(value == 1){
    background(255, 0, 0);
  }
  else if(value == 2){
    background(0, 255, 0);
  }
}

void mousePressed(){

  //increment the value variable
  value = value + 1;

  //reset the value variable when it gets too big
  if(value > 2){
    value = 0;
  }
}