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

Share this:

CONVERSATION

0 comentários:

Postar um comentário