2017-05-11 1 views
0

J'ai donc ce code de liste de contrôle en cours de traitement, et je veux être capable de cliquer sur l'un des boutons de la liste, et ce bouton se remplit de noir, mais chaque fois. J'ai obtenu cette partie fonctionnant pour un seul bouton, mais chaque fois que j'implémente plus de boutons dans la classe et cliquez sur un bouton, il remplit chaque bouton. J'ai essayé d'utiliser pushMatrix/popMatrix & pushStyle/popStyle, mais chaque fois que je fais cela, les boutons ne changent jamais de couleur lorsque je les clique. Si quelqu'un pouvait me dire comment faire cela, ce serait très apprécié.Liste de vérification dans le traitement des problèmes de remplissage

est ici la classe bouton:

class Button { 
// Other optional attributes could be r, g, and b values for examples 
int xLoc; 
int yLoc; 
int wide; 
int tall; 
int fill; 
boolean checked; 

Button(int x, int y, int w, int h, int f) { 
xLoc = x; 
yLoc = y; 
wide = w; 
tall = h; 
fill = f; 
} 

void display() { 
//fill with blue green and create the rect 
fill(fill); 
if (mousePressed) { 
    if (button1.isClicked() == true) { 
    fill = 0; 
    } 
} 
ellipse(xLoc, yLoc, wide, tall); 
} 

// returns true if the mouse is over the button and false otherwise 
boolean isClicked() { 
if (mouseX > xLoc && mouseX < xLoc + wide) { 
    if (mouseY > yLoc && mouseY < yLoc + tall) { 
    return true; 
    } 
} 
return false; 
} 

boolean isChecked() { 
if (fill == 0) { 
    return true; 
} else { 
    return false; 
} 
} 
} 

Et voici le code principal:

Button button1 = new Button(50, 50, 20, 20, 255); 
Button button2 = new Button(50, 75, 20, 20, 255); 
Button button3 = new Button(50, 100, 20, 20, 255); 
Button button4 = new Button(50, 125, 20, 20, 255); 

void setup() { 
size(500, 500); 
} 

void draw() { 
background(50); 
button1.display(); 
button2.display(); 
button3.display(); 
button4.display(); 
} 
+0

Avez-vous savoir [votre première question] (http: // stackoverflow. com/questions/43897582/create-a-checklist-in-processing)? Si oui, répondez-y ou supprimez-le. Si ce n'est pas le cas, modifiez-le pour inclure une question. –

Répondre

1

Les fonctions pushMatrix et popMatrix() ne traitent que des traductions et des rotations. Ils ne traitent pas des couleurs de remplissage.

Regardez cette ligne dans votre Button classe:

if (button1.isClicked() == true) { 

Chaque bouton vérifie uniquement si button1 cliquez dessus. Vous voulez probablement à vérifier si le bouton est cliqué en cours:

if (isClicked() == true) { 

qui peut être raccourci à ceci:

if (button1.isClicked()) {