#10 - Distância
Explicar como se pode detectar cliques do mouse sobre um botão retangular com cantos arredondados.
Dentro do draw foi criado um if contendo mousePressed onde verifica-se o local de clique e caso haja clique dentro dos retângulos o botão branco se torna preto, caso haja clique nos círculos, cinza.
int x = 200;
int y = 200;
int tCirculo = 50; // Bordas
int xHorizontal = x - tCirculo/2;
int yHorizontal = y;
int larguraH = 100 + tCirculo;
int alturaH = 50; // retângulo horizontal
int xVertical = x;
int yVertical= y - tCirculo/2;
int larguraV = 100;
int alturaV = 50 + tCirculo; // retêngulo vertical
boolean dentro = false; // parâmetro inicial de detecção
void setup (){
size(500,500);
}
void draw(){
noStroke();
Circulos(x, y, tCirculo, tCirculo);
Quadrados(xVertical, yVertical, larguraV, alturaV);
Quadrados(xHorizontal, yHorizontal, larguraH, alturaH);
if (mousePressed == true) {
if (((mouseX >= xVertical) && (mouseX <= xVertical + larguraV) && ((mouseY >= yVertical) && (mouseY <= yVertical + alturaV)))
|| ((mouseX >= xHorizontal) && (mouseX <= xHorizontal + larguraH) && ((mouseY >= yHorizontal) && (mouseY <= yHorizontal + alturaH)))){
println("Dentro dos retângulos");
fill(0);
}
if ( (distancia2D(x, y, mouseX, mouseY) <= tCirculo/2) || (distancia2D(x+100, y, mouseX, mouseY) <= tCirculo/2)
|| (distancia2D(x, y+50, mouseX, mouseY) <= tCirculo/2) || (distancia2D(x+100, y+50, mouseX, mouseY) <= tCirculo/2) ){
println("Dentro dos circulos");
fill(200);
}
}
else {
fill(255);
}
}
void Circulos (int x, int y, int l, int a){
ellipse(x, y, l, a);
ellipse(x+100, y, l, a);
ellipse(x, y+50, l, a);
ellipse(x+100, y+50, l, a);
}
void Quadrados (int x, int y, int l, int a){
rect (x, y, l, a);
}
float distancia2D(int x1,int y1,int x2,int y2){
float distancia = sqrt(pow(distancia1D (x2, x1),2) + pow(distancia1D (y2, y1),2));
return distancia;
}
float distancia1D(int n1,int n2){
float distancia = abs(n2 - n1);
return distancia;
}
0 comentários:
Postar um comentário