Outils pour utilisateurs

Outils du site


acceder_aux_evenements_une_classe

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