====== 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; } } } {{tag>processing sylvain}}