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

加载图像鼠标单击-处理/Java,java,processing,Java,Processing,我正在尝试编写简单的代码(我最初几个小时使用的是Processing和Java),它将显示一个类似于Rubin花瓶的负面图像。这个,有两张脸还是一个花瓶 我有加载第一个图像的代码(黑色面/白色花瓶) 如何在鼠标单击时获得要加载的第二个图像?我已经试过了,但还没有接近成功 a) 此时会出现一个单击的第二个图像。再点击一下,它就会消失,依此类推 b) 按住鼠标按钮时显示第二个图像 我能找到的最接近切换图像的代码是 PImage img,imageinverse; void setup () {

我正在尝试编写简单的代码(我最初几个小时使用的是Processing和Java),它将显示一个类似于Rubin花瓶的负面图像。这个,有两张脸还是一个花瓶

我有加载第一个图像的代码(黑色面/白色花瓶)

如何在鼠标单击时获得要加载的第二个图像?我已经试过了,但还没有接近成功

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);

  }

}

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

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

您也永远不会更改值变量。因此,即使您在草图顶部声明了value变量,使其在mousePressed()函数的作用域中仍然,if语句的计算结果也将始终为true。了解有关随时间修改变量的更多信息

即使您解决了这两个问题,每次单击鼠标时,只要您按下按钮,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;
  }
}

与论坛网站不同,我们不会在堆栈溢出上使用“感谢”、“感谢任何帮助”或签名。看见
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;
  }
}