Accéder aux évènements dans une classe
De Centre de Ressources Numériques - Labomedia
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;
}
}
}