Annonce

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


#1 2012-03-04 14:25:49 débutant processing premières classes et interactions

Berenger
membre
Lieu: Nantes
Date d'inscription: 2010-06-02
Messages: 190
Site web

débutant processing premières classes et interactions



Bonjour,

Utilisateur de pd, je commence processing, dans l'espoir de travailler avec les deux logiciels pour créer des applis multimédia.

Pour apprendre j'ai décidé de créer de GUIs en processing (similaire à controlP5). J'ai crée des sliders horizontaux, les verticaux ont encore quelques bugs et je voulais créer un toggle avec plusieurs pas. Je m'explique : on définit un nombre de pas et à chaque fois qu'on appui dessus le pas augmente de un. Le pas va gérer la couleur du slider on part d'une couleur quelqueconque et à chaque pas on  se rapproche d'une deuxième couleur (avec lerpColor).

Mon pb vient du fait qu'à chaque fois que je clique j'avance de deux pas au lieu d'un seul et que je comprends pas pourquoi. j'utilise un boucle while pour gérer l'interaction souris

while(mouseButton==LEFT){
  ...
  break;}
mouseButton=0;

Est-ce que j'ai bien implementé cette fonction ? est-ce que le break me permet bien de sorti de la boucle une fois que les lignes de codes sont effectuées ? et surtout pouquoi est-ce que je me retrouve avec deux incrémentation de pas à chaque fois que je clique ?

Le sketch est joint au post, à votre bon coeur smile

Dernière modification par Berenger (2012-03-04 16:40:41)

Hors ligne

 

#2 2012-03-04 16:13:40 Re : débutant processing premières classes et interactions

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: débutant processing premières classes et interactions



Je n'ai pas trouvé de sketch collé à ton post.
Mais à première vue il vaut mieux faire comme ceci :

void mousePressed(){
if(mouseButton == LEFT){
...
}}

Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#3 2012-03-04 16:43:07 Re : débutant processing premières classes et interactions

Berenger
membre
Lieu: Nantes
Date d'inscription: 2010-06-02
Messages: 190
Site web

Re: débutant processing premières classes et interactions



maintenant il est joint smile

alors si je fais ça en fait je ne sors plus de la boucle et du coup mon boutton n'arrete pas de boucler sur les différents pas.

à moins qu'il y ait un moyen de simple de sortir d'une boucle if (j'imagine si la condition n'est plus respectée) mais je n'ai pas trouvé où placer la réintialisation de mouseButton pour sortir de la boucle directement et avoir un comportement comme celui que je souhaite.

Hors ligne

 

#4 2012-03-04 19:39:49 Re : débutant processing premières classes et interactions

Berenger
membre
Lieu: Nantes
Date d'inscription: 2010-06-02
Messages: 190
Site web

Re: débutant processing premières classes et interactions



en fait avec un if (){...}
j'obtiens exactement le même fonctionement.

Hors ligne

 

#5 2012-03-05 06:47:58 Re : débutant processing premières classes et interactions

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: débutant processing premières classes et interactions



il faut savoir que mousePressed reste en true tant que le bouton est appuyé, après faut joué avec released

Hors ligne

 

#6 2012-03-05 07:35:14 Re : débutant processing premières classes et interactions

Berenger
membre
Lieu: Nantes
Date d'inscription: 2010-06-02
Messages: 190
Site web

Re: débutant processing premières classes et interactions



cgiles a écrit:

il faut savoir que mousePressed reste en true tant que le bouton est appuyé, après faut joué avec released

oui on est d'accord et c'est précisement mon problème, je ne sais pas où le placer.
J'ai essayé plusieurs endroits, j'ai essayé plusieurs tests (avec des if, avec des while) et en enssayant les différents moyens d'accès à mouse (mouseButton, mouseClicked(), mousePressed(),mousePressed, mouseReleased() ...) mais pour l'instant rien n'y fait.

Hors ligne

 

#7 2012-03-05 14:14:11 Re : débutant processing premières classes et interactions

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: débutant processing premières classes et interactions



tu as les events mousePressed et mouseReleased a mettre en dehors du draw, ils s'activent quand l'événement se produit.

void mousePressed(){
}
void mouseReleased(){
}
Et ces events ne sont appellé que lorsque l'évenement est produit, soit quand le bouton s'enfonce et quand il est relaché, pas plus, pas moins.

Dernière modification par cgiles (2012-03-05 14:15:40)

Hors ligne

 

#8 2012-03-05 14:28:39 Re : débutant processing premières classes et interactions

Berenger
membre
Lieu: Nantes
Date d'inscription: 2010-06-02
Messages: 190
Site web

Re: débutant processing premières classes et interactions



oui je vois donc maintenant dans ma classe j'ai ces deux fonctions : je les ai mis tout à la fin de ma classe

void mousePressed() {   
    if (mouseX>xPos && mouseX<xPos+tSize && mouseY>yPos && mouseY<yPos+tSize) {         
        step = (step+1)%nSteps; 
        float amount =step/(nSteps-1);
        //calculate color with lerpColor to get a more intense color each step according to target color       
        tempColor = lerpColor(tColor1, tColor2, amount);         
    }
  }
 
  void mouseReleased(){
     //mouseButton=0;
  }
 

le pb est qu'il ne se passe plus rien quand je clique sur le bouton

Hors ligne

 

#9 2012-03-05 14:31:56 Re : débutant processing premières classes et interactions

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: débutant processing premières classes et interactions



Salut Bérenger,

Il y a des infos pour utiliser les "évènements" dans des classes de libraries sur ces pages
http://code.google.com/p/processing/wiki/LibraryBasics
http://wiki.processing.org/w/Register_events

J'ai modifié ton code en conséquence, et ça fonctionne, en gros :
- créer une référence de l'applet pricniapl que les classes pourront utiliser
- déclarer ta classe comme 'public'
- référencer la fonction d'écoute des évènements auprès de l'applet principal
- ajouter la fonction d'écoute d'évènements

Ce qui donne :

Hors ligne

 

#10 2012-03-05 15:34:07 Re : débutant processing premières classes et interactions

Berenger
membre
Lieu: Nantes
Date d'inscription: 2010-06-02
Messages: 190
Site web

Re: débutant processing premières classes et interactions



Chouette smile merci emoc !

si je comprends bien ce que tu me dis je pourrais même me passer d'appeler myToggle.display(); en faisant une classe : public class draw(){...} ?

Hors ligne

 

#11 2012-03-05 16:04:24 Re : débutant processing premières classes et interactions

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: débutant processing premières classes et interactions



Berenger a écrit:

si je comprends bien ce que tu me dis je pourrais même me passer d'appeler myToggle.display(); en faisant une classe : public class draw(){...} ?

Oui c'est ça, par exemple les objets de controlP5 ne nécessitent pas d'être explicitement affichés dans draw()
D'ailleurs, je ne sais pas si tu as jeté un oeil, mais il est possible d'étendre controlP5, il y a un exemple ici http://www.sojamo.de/libraries/controlP … roller.pde

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025