Получить координаты нажатых точек при обработке 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)