mousePressed()

edited August 2015 in Questions about Code

Gostaria de usar o mousePressed(); para fazer mais de uma tarefa, clicando no mesmo lugar. Clicar em um quadrado e executar uma tarefa, após isso, clicar no mesmo local e executar outra tarefa.

noStroke(); }

void draw(){ fill(255,0,0); rect(0,0,100,200); fill(0,0,255); rect(100,0,100,200); fill(c); ellipse(100,100,70,70);

if(mousePressed == true){ beRed(); if(mousePressed == true && mouseX < 100){ beBlue(); } }

}

void beRed(){ c = color(128,0,0); }

void beBlue(){ c = color(0,0,128); }

Tagged:

Comments

  • int task = 0;
    
    void setup() {
      size(200, 200);
      background(0);
    }
    
    void draw() {
    }
    
    void mousePressed() {
      switch(task) {
      case 0:
        task_0();
        break;
      case 1:
        task_1();
        break;
      case 2:
        task_2();
        break;
      case 3:
        task_3();
        break;
      case 4:
        task_4();
        break;
      }
      task++;
      task%=5;
    }
    
    
    void task_0(){
      fill(255,0,255);
      ellipse(100,100,50,50);
    }
    
    void task_1(){
      fill(255,0,0);
      rectMode(CENTER);
      rect(100,100,180,20);
    }
    
    void task_2(){
      fill(0,255,0);
      triangle(100,100,200,100,150,50);
      triangle(100,100,0,100,50,150);
    }
    void task_3(){
      fill(255);
      textSize(40);
      textAlign(CENTER);
      text("HELLO",100,100);  
    }
    
    void task_4(){
      background(0);
    }
    
  • _vk_vk
    edited August 2015
    • Hello. You should not keep opening new threads with the same question better explained. Just edit your other posts with new information. This will help keeping all info together.

    • You should try to post a runnable code. This code won't compile.

    • Please read the link below, and properly format your code.

    That said. This can be done by keeping track of how many times the square has been clicked. Or keeping track of a boolean. It depends what is supposed to happen in, let's say, a third click...

    • Oi, você não deveria abrir novos 'posts' com a mesma questão melhor explicada (este já é o terceiro). É só editar o post antigo com as novas informações. Assim toda a informação fica junta

    • Seria melhor postar um código que rodasse... Este código não compila...

    • Por favor, leia o link abaixo e formate direito o seu código na página.

    http://forum.processing.org/two/discussion/8045/how-to-format-code-and-text#latest

    Humm.. caso não consiga ler em inglês, é assim:

    -deixe uma linha de intervalo entre o código o qualquer outro texto.

    -selecione o código "colado" na página, e aperte ctr o (control mesmo e não command).

    Dito isto, sim é possível fazer isso contando o número de clicks no seu quadrado. Ou usando uma booleana. depende um pouco do que é esperado que aconteça, digamos, num terceiro click..

    Um exemplo usando o exemplo que vem com o Processing:

    (mudei o comportamento do quadrado, nos clicks impares ele muda pra um acor aleatória)

    int rectX, rectY;      // Position of square button
    int circleX, circleY;  // Position of circle button
    int rectSize = 90;     // Diameter of rect
    int circleSize = 93;   // Diameter of circle
    color rectColor, circleColor, baseColor;
    color rectHighlight, circleHighlight;
    color currentColor;
    boolean rectOver = false;
    boolean circleOver = false;
    
    
    //aqui
    int timesClicked = 0;
    
    void setup() {
      size(640, 360);
      rectColor = color(0);
      rectHighlight = color(51);
      circleColor = color(255);
      circleHighlight = color(204);
      baseColor = color(102);
      currentColor = baseColor;
      circleX = width/2+circleSize/2+10;
      circleY = height/2;
      rectX = width/2-rectSize-10;
      rectY = height/2-rectSize/2;
      ellipseMode(CENTER);
    }
    
    void draw() {
      update(mouseX, mouseY);
      background(currentColor);
    
      if (rectOver) {
        fill(rectHighlight);
      } else {
        fill(rectColor);
      }
      stroke(255);
      rect(rectX, rectY, rectSize, rectSize);
    
      if (circleOver) {
        fill(circleHighlight);
      } else {
        fill(circleColor);
      }
      stroke(0);
      ellipse(circleX, circleY, circleSize, circleSize);
    }
    
    void update(int x, int y) {
      if ( overCircle(circleX, circleY, circleSize) ) {
        circleOver = true;
        rectOver = false;
      } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {
        rectOver = true;
        circleOver = false;
      } else {
        circleOver = rectOver = false;
      }
    }
    
    void mousePressed() {
      if (circleOver) {
        currentColor = circleColor;
      }
      if (rectOver) {
    
      // e aqui!!! ( % 2 == 0 checa se é par)
        if (timesClicked % 2==0) {
          currentColor = rectColor;
        } else {
          currentColor = color(random(100), random(200), random(255));
        }
        timesClicked++;
      }
    }
    
    boolean overRect(int x, int y, int width, int height) {
      if (mouseX >= x && mouseX <= x+width && 
        mouseY >= y && mouseY <= y+height) {
        return true;
      } else {
        return false;
      }
    }
    
    boolean overCircle(int x, int y, int diameter) {
      float disX = x - mouseX;
      float disY = y - mouseY;
      if (sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
        return true;
      } else {
        return false;
      }
    }
    
  • :) late...

  • Slow. :))

This discussion has been closed.