Accéder aux évènements dans une classe

Processing permet d'accéder aux évènements dans une classe afin de rendre le code plus lisible et de créer nos propres librairies.

Bouton b1, b2;
 
void setup() {
  size(600, 600);
  b1 = new Bouton(this, width / 2, height / 2);
  b2 = new Bouton(this, 100, 100);
}
 
void draw() {
}
 
public class Bouton {
  PApplet parent;
  PVector position;
  int taille;
  boolean etat;
  color couleur;
 
  public Bouton (PApplet _parent, int _x, int _y) {
    parent = _parent;
    position = new PVector(_x, _y);
    taille = 40;
    etat = false;
    couleur = color(255, 0, 0);
    parent.registerMethod("draw", this);
    parent.registerMethod("mouseEvent", this);    
    parent.registerMethod("keyEvent", this);
  }
 
  void draw() {
    if (etat) {
      fill(couleur);
    } 
    else {
      fill(255);
    }
    rect(position.x, position.y, taille, taille);
  }
 
  void mouseEvent(processing.event.MouseEvent event) {
    int x = event.getX();
    int y = event.getY();
 
    switch (event.getAction()) {
    case MouseEvent.PRESS:
      if ((x > position.x) && (x < position.x + taille) && (y > position.y) && (y < position.y + taille)) {
        etat = !etat;
      }
      int boutonSouris = event.getButton();
      break;
    case MouseEvent.RELEASE:
      // Routine ...
      break;
    case MouseEvent.CLICK:
      // Routine ...
      break;
    case MouseEvent.DRAG:
      // Routine ...
      break;
    case MouseEvent.MOVE:
      // Routine ...
      break;
    case MouseEvent.WHEEL:
      // Routine ...
      break;
    }
  }
 
  void keyEvent(processing.event.KeyEvent event) {
    switch (event.getAction()) {
    case KeyEvent.PRESS:
      if (event.getKey() == ' ') {
        // Routine ...
      }
      if (event.getKeyCode() == UP) {
        // Routine ...
      }
      break;
    case KeyEvent.RELEASE:
      if (event.getKey() == ' ') {
        // Routine ...
      }
      if (event.getKeyCode() == UP) {
        // Routine ...
      }
      break;
    case KeyEvent.TYPE:
      // Routine ...
      break;
    }
  }
}
  • acceder_aux_evenements_une_classe.txt
  • Dernière modification: 2019/10/18 11:18
  • par Mushussu