Получить координаты нажатых точек при обработке 3

То, что я хочу сделать, это просто изменить цвет пикселей, которые я нажал. Итак, есть два состояния;

щелкнул мышью

мышь не нажата

Я использую код ниже;

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

Когда я запускаю этот код после первого клика, он продолжает рисовать, куда бы я ни перемещал мышь, но то, что я хочу, это; msgstr "рисовать каждый раз, когда я нажимаю на экран". введите описание изображения здесь

2 ответа

Решение

Ваши условия проверки не верны.

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

или в основном

if (mousePressed)
    myBol = !myBol

Изменит myBol значение на каждый клик.

Поскольку вы хотите рисовать по клику, нет необходимости в этом значении. Просто используйте значение mousePressed напрямую

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

У вас есть дополнительная логика, которая не имеет смысла. Зачем тебе 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;}

Можно сократить до этого, используя оператор not:

boolean example;
example = !example;

И это:

if(example == true)

Можно сократить до этого:

if(example)
Другие вопросы по тегам