Bonjour,
Je débute en processing et je viens de faire un programme, j'aimerai lorsque j'appuie sur une touche du clavier faire apparaitre une image, sauf qu'elle s'affiche en boucle et fait planter le programme, est ce que vous auriez une petite idée pour résoudre le problème ?
Merci d'avance !
Voici mon code :
class Check {
int x, y;
int size;
color baseGray;
boolean checked = false;
Check(int xp, int yp, int s, color b){
x = xp;
y = yp;
size = s;
baseGray = b;
}
void press(float mx, float my) {
if (mouseButton==LEFT &&(mx >= x) && (mx <= x+size) && (my >= y) && (my <= y+size)){
checked = true;
}
else if (mouseButton==RIGHT &&(mx >= x) && (mx <= x+size) && (my >= y) && (my <= y+size)){
checked = false;
}
}
void display(){
stroke(0, 170, 200);
strokeWeight(1);
fill(255,0);
rect(x, y, size, size);
if (checked == true) {
fill(242, 32, 5, 200);
rect(x, y, 14, 14);
}
}
}
int numChecks = 4000;
Check[] checks = new Check[numChecks];
void setup() {
size(1148, 728);
int x =14;
int y = 14;
for (int i = 0; i < numChecks; i++) {
checks[i] = new Check(x, y, 14, color(255));
x += 14;
if (x > 1120) {
x = 14;
y += 14;
}
}
}
void draw(){
background(255);
if (key=='a'){
PImage monImage;
monImage = loadImage ("Aa.jpg");
image (monImage, 84, 84);
}
else if (key=='b'){
PImage monImage;
monImage = loadImage ("Bb.jpg");
image (monImage, 84, 84);
}
else if (key=='c'){
PImage monImage;
monImage = loadImage ("Cc.jpg");
image (monImage, 84, 84);
}
else if (key=='d'){
PImage monImage;
monImage = loadImage ("Dd.jpg");
image (monImage, 84, 84);
}
else if (key=='e'){
PImage monImage;
monImage = loadImage ("Ee.jpg");
image (monImage, 84, 84);
}
for (int i=0; i<numChecks; i++) {
checks[i].display();
}
for(int i=0; i<1000; i+=70){
stroke(0, 130, 220);
strokeWeight(1.2);
line(14, 14+i, 1134, 14+i);
}
for(int i=0; i<1135; i+=70){
stroke(0, 70, 220);
strokeWeight(1.2);
line(14+i, 14, 14+i, 714);
}
noCursor();
stroke(255);
fill(242, 32, 5, 200);
rect(mouseX-7, mouseY-7, 14, 14);
}
void mousePressed(){
for (int i = 0; i < numChecks; i++) {
checks[i].press(mouseX, mouseY);
}
}
void mouseDragged(){
for (int i = 0; i < numChecks; i++) {
checks[i].press(mouseX, mouseY);
}
}
Hors ligne
Si tu fais
if ( keyPressed )
{
if (keyCode == a ){.....}
}
Ca marche pas ?
Hors ligne
Bonjour,
Merci pour ta réponse.
Je viens de tester et ça ne fonctionne pas, les images n'apparaissent pas.
Hors ligne
Essaye de mettre les touches appuyées sur une fonction keypressed() [http://processing.org/reference/keyPressed_.html] plutôt que dans draw(), avec en fonction de la touche appuyée soit l'image, ou si ça ne fonctionne pas soit une variable qui prends une valeur de 1 à 5, tu ajouteras les structures conditionnelles avec cette variable dans draw() pour afficher les images. Si ça ne fonctionne toujours pas essaye de reset la variable à 0 après chaque image affiché.
Tu dois avoir en tête que draw() est une boucle et que si tu demande dans cette boucle d'afficher une image, elle s'affichera en boucle. De même il suffit d'une fois que key soit appuyé pour que la condition soit toujours vérifiée dans draw().
Aussi met donc le noCursor() en setup().
Dernière modification par BlackTree (2013-02-21 19:19:15)
Hors ligne