Atividade 10
- Marcos André
- 24 de abr. de 2016
- 1 min de leitura

'Diferenciar, com base em exemplos, como se pode detectar o clique do mouse sobre botões circulares e retangulares'
A tarefa se torna fácil devido à função já feita em sala(distancia2D),que, para a esfera, será utilizada para saber se a distância entre o centro da esfera e as cordenadas do mouse são menores que o raio da mesma.Foi preciso apenas adicionar a variável interna booleana mousePressed ao código para detectar se o mouse está pressionado nos botões.Para o retângulo, se faz necessário apenas algumas comparações para saber se o mouseX e mouseY estão dentro dos limites x e y determinados pelo botão retângular.
Obs:Devido ao input lag do filtro BLUR, para a esfera funcionar o botão precisa ser pressionado por mais tempo.
Segue o código:
int distancia2D(int x1, int y1, int x2, int y2) { return int(sqrt(pow(x1 - x2,2) + pow(y1 - y2,2))); }
void setup(){ size(600,600); frameRate(60);
}
void draw(){
background(100,252,211);
if (( distancia2D(120,120,mouseX,mouseY) <= 100 )&&(mousePressed == true)) { fill(int(random(1,255)),int(random(1,255)),int(random(1,255)),int(random(1,255))); ellipse(120,120,200,200); filter(BLUR,5); } else { fill(225,222,200); ellipse(120,120,200,200); }
if ((mouseX >= 290 && mouseX <= 290+280 && mouseY >= 50 && mouseY <= 50+150) && (mousePressed == true)) { fill(0); rect(290,50,280,150,20); filter(THRESHOLD); } else { stroke(255); fill(225,222,230); rect(290,50,280,150,20); }
if ((mouseX >= 290 && mouseX <= 290+280 && mouseY >= 250 && mouseY <= 250+150) && (mousePressed == true)) { fill(30,30,15); rect(290,50,280,150,20); filter(INVERT); } else { stroke(255); fill(225,222,230); rect(290,250,280,150,80); }
Comments