我正在尝试编写简单的代码(我使用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);
}
}
答案 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;
}
}