Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2014-02-03 05:49:47 multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

multi_constucteurs



bonjour

je voudrais faire une class bouton avec plusieurs boutons
ex Bouton b1,b2,b3ect;mais cela ne fontionne pas ;il y a surement quelques choses que je n'ai pas compris.

Code (P5) :

Bouton b1,b2;

void setup()
{
  size(600, 800);
  
  b1=new Bouton();
 b2=new Bouton();
  
}
void draw()
{
  b1.display();
  b2.display();
 
}
class Bouton {
  float x;
  float y;
  
 
  Bouton() {
    x=width/2;
    y=100;
  
   
  }
Bouton(){
  x=100;
  y=400;
}
    
    
 
  void display() {
    ellipse(x, y, 40, 40);
  }
  }

Hors ligne

 

#2 2014-02-03 09:02:35 Re : multi_constucteurs

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: multi_constucteurs



En fait chaque bouton doit avoir des coordonnées propres. Pour cela du doit passer dans le constructeur de la classe des paramètres.
Il existe aussi la surcharge du constructeur, c'est-à-dire en fonction des paramètres passés, l'un ou l'autre des constructeurs sera pris en compte :

Bouton b1, b2;  

void setup() {  
  size(600, 800);  

  b1=new Bouton(200, 200);  
  b2=new Bouton();
}

void draw() {  
  b1.display();  
  b2.display();
}  

class Bouton {  
  float x;  
  float y;  

  Bouton(int _x, int _y) {  
    x = _x;  
    y = _y;
  } 

  Bouton() {  
    x = 100;  
    y = 400;
  }  

  void display() {  
    ellipse(x, y, 40, 40);
  }
}

Hors ligne

 

#3 2014-02-04 03:28:00 Re : multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: multi_constucteurs



bonjour

je te remercie pour ta réponse;mais il y a deux méthodes;ce que je voulais savoir c'est si il était possible de faire n boutons avec une méthode?j'avais testé l'exemple avec les deux méthodes ,ce que je ne comprends pas c'est pas exemple si j'ai 5 boutons et si il faut une méthode par bouton c'est comment faire?car il n'y a que deux méthodes.Avec par exemple le programme qui suit,sans la surcharges est il possible de faire plusieurs boutons.Car je l'ai essayez avec un bouton cela fonctionne,mais avec deux il me dit constructeur indéfini .

merci.


Bouton b1,b2,b3;
void setup()
{
size(500,800);
b1=new Bouton();
b2=new Bouton();
b3=new Bouton();
}

class Bouton { 
  float x; 
  float y; 
   
   
  Bouton() { 
    x=width/2; 
    y=100; 
   
     
  } 
Bouton(){ 
  x=100; 
  y=400; 
}

Hors ligne

 

#4 2014-02-04 04:15:40 Re : multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: multi_constucteurs



avec la méthode de surchrage cela fonctionne ,Mais comment faire avec l'autre méthode?.

Code (P5) :

Bouton b1,b2,b3,b4;
void setup()
{
  size(600,800);
  b1=new Bouton(width/2,100);
  b2=new Bouton(200,100);
  b3=new Bouton(400,100);
  b4=new Bouton(200,400);
}
void draw()
{
  b1.display();
  b2.display();
  b3.display();
  b4.display();
}
class Bouton
{
  float x,y;
  Bouton(float ix,float iy){
    x=ix;
    y=iy;
  }
  void display()
  {
    rect(width/2,100,50,50);
    rect(200,100,40,40);
    rect(400,100,30,30);
    rect(200,400,30,30);
  }
}

Hors ligne

 

#5 2014-02-04 10:08:30 Re : multi_constucteurs

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: multi_constucteurs



Je ne comprends pas pourquoi dans la méthode void display() tu fais afficher les carrés avec des coordonnées définis.
Oublie dans un premier temps la surcharge de méthode.

Je pense que tu devrais relire des tutoriels sur les classes.

Un bouton est défini par sa position, sa taille, son état, sa couleur …

class Bouton {
  int x, y, taille;
  boolean etat;
  color couleur;
}

La classe devra permettre lors de la construction d'un nouveau bouton de remplir ces différentes caractéristiques. Il se peut qu'il y en ai par défaut, sa couleur et sa taille par exemple.

class Bouton {
  int x, y, taille;
  boolean etat;
  color couleur;

  Bouton(int _x, int _y) {
    x = _x;
    y = _y;
    taille = 30;
    etat = false;
    couleur = color(255, 0, 0);
  }
}

Nous pouvons à présent créer une méthode pour l'afficher qui dépend de l'état du bouton

void affichage() {
    if (etat) {
      fill(couleur);
    } 
    else {
      fill(255);
    }
    rect(x, y, taille, taille);
  }

Ensuite, il faut déclarer et instancier cette classe d'objet :

Bouton b1, b2, b3, b4;

void setup() {
  size(600, 600);  
  b1 = new Bouton(width/2, 100);  
  b2 = new Bouton(200, 100);  
  b3 = new Bouton(400, 100);  
  b4 = new Bouton(200, 400);
}

void draw() {
  b1.affichage();
  b2.affichage();
  b3.affichage();
  b4.affichage();
}

class Bouton {
  int x, y, taille;
  boolean etat;
  color couleur;

  Bouton(int _x, int _y) {
    x = _x;
    y = _y;
    taille = 30;
    etat = false;
    couleur = color(255, 0, 0);
  }

  void affichage() {
    if (etat) {
      fill(couleur);
    } 
    else {
      fill(255);
    }
    rect(x, y, taille, taille);
  }
}

Hors ligne

 

#6 2014-02-05 04:13:38 Re : multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: multi_constucteurs



bonjour

je te remercie pour tes explications;mais d'après ce que je comprends dans le programme ,le bouton sur lequel je place la souris devrait changer de couleur quant je clic dessus;mais la il ne se passe rien;je ne comprends pas d'ou vient le problème .

merci encore.

Hors ligne

 

#7 2014-02-05 07:53:55 Re : multi_constucteurs

top
membre
Date d'inscription: 2012-04-12
Messages: 43

Re: multi_constucteurs



tu peux aussi utiliser la classe JButton de java

Hors ligne

 

#8 2014-02-05 08:11:04 Re : multi_constucteurs

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: multi_constucteurs



C'est normal car la méthode pour le clique n'a pas été implémenté. Je te laissais le soin de le faire.

Si tu veux des boutons fonctionnels sans te poser de questions utilise ControlP5.
Si tu veux comprendre le fonctionnement des classes et l'interaction entre les instances et les différents évènements alors il faut se creuser la tête et chercher dans les différents tutoriels poser des questions précises dans les forums.

Pour la deuxième solution, un petit coup d'oeil ici te sera profitable :
http://wiki.processing.org/w/Register_events

Bon courage

[Edit] Il semblerait que l'exemple du lien ne fonctionne pas pour la version 2

Dernière modification par Mushussu (2014-02-05 08:27:03)

Hors ligne

 

#9 2014-02-05 11:01:30 Re : multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: multi_constucteurs



bonjour

je vous remercies pour toutes vos réponses;je vais regarder tous ça à tête reposer.

merci  .

Hors ligne

 

#10 2014-02-05 13:26:30 Re : multi_constucteurs

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: multi_constucteurs



Voici la version pour Processing 2.0 de la gestion des évènements clavier et souris dans une classe :

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;

  Bouton (PApplet _parent, int _x, int _y) {
    parent = _parent;
    position = new PVector(_x, _y);
    taille = 40;
    etat = false;
    couleur = color(255, 0, 0);
    parent.registerDraw(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;
      }
      break;
    case MouseEvent.RELEASE:
      // Routine ...
      break;
    case MouseEvent.CLICK:
      // Routine ...
      break;
    case MouseEvent.DRAG:
      // Routine ...
      break;
    case MouseEvent.MOVE:
      // Routine ...
      break;
    }
  }

  void keyEvent(processing.event.KeyEvent event) {
    if (event.getKey() == ' ') {
    }
  }
}

Hors ligne

 

#11 2014-02-06 03:41:27 Re : multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: multi_constucteurs



bonjour

Remerciements pour le programme que tu m'as envoyé;c'est tous à fait ce que je voulais,je trouve que c'est quant même très compliqué pour faire fonctionner  quelques boutons.Je vais regarder ce que '(mouse event )veux dire je ne connais pas cette instruction.

merci.

Hors ligne

 

#12 2014-02-06 09:11:45 Re : multi_constucteurs

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: multi_constucteurs



Je me suis permis d'élargir ta requête pour offrir un cadre global pour ceux qui suive le forum. De plus cette manière d'aborder le problème permet de construire ses propres librairies.

Si tu souhaites d'avantage de renseignements :
https://github.com/processing/processin … ary-Basics


Sinon, je joins le lien d'une page en construction sur LE wiki:
http://wiki.labomedia.org/index.php/Acc … une_classe

Hors ligne

 

#13 2014-02-06 09:13:15 Re : multi_constucteurs

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: multi_constucteurs



citation :

je trouve que c'est quant même très compliqué pour faire fonctionner  quelques boutons

D'où la pertinence, comme te le suggérai Mushussu, d'utiliser une librairie telle que ControlP5 qui gère tout cela pour toi... tongue

Le code que tu as ici peut apparaître compliqué parce que, justement,  il ne permet pas de ne faire fonctionner que quelques boutons...
Il est la base qui permet de faire fonctionner n'importe quel bouton, pour n'importe quel besoin... big_smile

Bon courage... smile


L'Amour au Peuple !

Hors ligne

 

#14 2014-02-06 14:08:41 Re : multi_constucteurs

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: multi_constucteurs



hahaha merci labomédia!
Je m'étais pris la tête avec la gestion des évents, et en fait c'est ultra simple....
Du coup j'en profite car je me posais la question : quelqu'un à réussi à faire tourner controlP5 en multitouch pour android?
Me souviens avoir buté dessus il y a un an sans pouvoir y répondre autrement qu'en me refaisant des classes bouton et slider justement... mais pourtant y'avais bien cette petite implémentation ControlP5pointer non?

Hors ligne

 

#15 2014-02-07 03:30:22 Re : multi_constucteurs

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: multi_constucteurs



bonjour

Dans la routine MouseEven que tu m'as fait parvenir ;que dois on mettre à l'endroit ou il est écrit routine?de quel genre de routine s'agit-il?

merci


case MouseEvent.RELEASE:
      // Routine ...
      break;

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024