获取Processing 3上点击点的坐标

时间:2016-11-04 12:08:01

标签: processing

我想要做的只是改变我点击的像素的颜色。所以有两种状态;

鼠标点击

未点击鼠标

我正在使用以下代码;

boolean myBol = false ;
void setup(){
  size(860,640);
  background(0);
}
void draw(){
  if (mousePressed) {

   if(myBol == true){myBol = false;} else {myBol = true;}

  } 

  if (myBol == true){
    stroke(255);
  point(mouseX,mouseY);
}}

当我在第一次点击后运行此代码时,它会继续绘制我移动鼠标的位置,但我想要的是; “每次点击屏幕都画画”。 enter image description here

2 个答案:

答案 0 :(得分:1)

您的检查条件不正确。

if (mousePressed) {
   if(myBol == true){
       myBol = false;
   } else {
       myBol = true;
   }
} 

或基本

if (mousePressed)
    myBol = !myBol

每次点击都会更改myBol值。

由于您想要点击,不需要此值。只需直接使用mousePressed值

if (mousePressed) {
    stroke(255);
    point(mouseX,mouseY);
}

答案 1 :(得分:0)

你有额外的逻辑并没有多大意义。当您已拥有myBol变量时,为什么需要mousePressed?你不能简化你的逻辑:

void setup() {
  size(860, 640);
  background(0);
}

void draw() {
  if (mousePressed) {
    stroke(255);
    point(mouseX, mouseY);
  }
}

或者您可以使用鼠标事件功能,如下所示:

void setup() {
  size(860, 640);
  background(0);
}

void mousePressed() {
  stroke(255);
  point(mouseX, mouseY);
}

void mouseDragged() {
  stroke(255);
  point(mouseX, mouseY);
}

void draw() {
}

此外,boolean值可以直接用于运算符,因此:

boolean example;
if(example == true){example= false;} else {example= true;}

可以使用运算符缩短为此:

boolean example;
example = !example;

而且:

if(example == true)

可以缩短为:

if(example)