Annonce

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


#1 2012-10-01 00:37:31 Besoin d'aide avec librairie ControlP5

tonioux
membre
Lieu: Bordeaux
Date d'inscription: 2012-10-01
Messages: 12
Site web

Besoin d'aide avec librairie ControlP5



Bonjour à tous,

je suis un petit newbee dans le forum de processing, donc débutant sur ce logiciel (malgré 2 mois de geekage intensif dessus...).

J'ai besoin que l'on m'aide pour la librairie controlP5. Je m'explique, je suis en train de faire une application qui est une sorte de guide numérique. J'explique le principe, tout d'abord je suis sur une interface avec un choix de bar / pub / restaurants etc... puis si on clique sur un des retaurant l'interface change et on est sur une map (Unfolding modifiée avec TileMill). Voilà grosso modo le topo de l'appli que je veux faire.

Et sur le côté de la fenêtre (sur l'interface de choix du restaurant / pub) j'ai donc voulu créer des Toggle pour faire apparaître des infos supplémentaires comme "Infos supplémentaires", "Accès", "Horraires" etc...
Donc si je clique sur un des toggle je voudrais qu'une fenêtre s'ouvre et qu'il y ai un texte défilant avec un slider zoom (ou pas en fonction de la difficulté, je veux surtout faire un programme que je comprend bien pour me familiariser avec Processing).

Alors le problème le voilà :

void controlEvent(ControlEvent theEvent) {

  if (theEvent.isController()) {
    print("control event from : "+theEvent.controller().name());
    println(", value : "+theEvent.controller().value());
  }

  if (theEvent.controller().name()=="Infos +") {
    if (theEvent.controller().value()==1) {
      c = color(105);
      fill(255);
      PFont font;
      font = loadFont("ArialNarrow-48.vlw");
      textFont(font, 12);
      text("Test texte dans le cadre", 35, 35, 200, 400);
    }

quand je lance l'appli, je clique sur le toggle, aucun soucis la fenêtre s'ouvre mais le texte ne s'ouvre que durant une demi seconde puis plus rien... Ma question est peut-on activer plusieurs choses quand le toggle est à 1? (c'est a dire faire un carré avec du texte) ou c'est bien plus compliqué que ça?

Idem j'ai deux toggle pour mes deux interfaces mais je n'arrive pas à attribuer un toggle pour lancer la carte et pour revenir sur l'applet principale...

Si quelqu'un arrive à m'aider ce serait super.

Merci à vous!


Antoine Edel, newbee des prairies numériques.

Hors ligne

 

#2 2012-10-01 08:23:51 Re : Besoin d'aide avec librairie ControlP5

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

Re: Besoin d'aide avec librairie ControlP5



peux tu poster ton code entier, ça serait plus simple pour tester

Hors ligne

 

#3 2012-10-01 08:33:45 Re : Besoin d'aide avec librairie ControlP5

tonioux
membre
Lieu: Bordeaux
Date d'inscription: 2012-10-01
Messages: 12
Site web

Re: Besoin d'aide avec librairie ControlP5



Voici le code :


import controlP5.*;    // importation de la librairie controlP5
import geomerative.*;

ControlP5 cp5;
color c;
int counter = 1;

RFont font;
RPoint[] myPoints;
String myText = "Guide Numérique ENSAM";
String [] top50 = {
  "Blarney Stones", "House Of The Parlement", "La Comptesse", "Le Fiacre", "115 New York", "El Chicho", "Medoquine", "Ciam", "Maison Eco-Citoyenne", "Krakatoa",
  "Le Cuvier", "Gare", "Arc En Rêve", "Le Tnt", "Centre Culturel Du Vin", "I-Boat", "Projet Culturel Ginko", "Agapi", "NODE", "Espace 29",
  "Garage Moderne", "Hangar 14", "Docks", "TBC Quinconces", "Hôtel de la Gare", "Stations Vcub", "ENSAM", "Campus de Talence", "ENSAP Bordeaux", "Galerie Suty",
  "KFC", "Grand Café", "Torito", "Azuli", "Apolo", "Le Comptoir du Jazz", "Théâtre Nationnal Bordeaux Aquitaine", "Place du Parlement", "Place Caju", "Place des Grand Hommes",
  "Place de la commédie", "Place de la Victoire", "Hall des Chartrons", "Place Paul Doumer", "Place Saint Pierre", "Saint Michel", "Rock School Barbey", "Cap Sciences",
  "Place Saint Projet", "Place Pey Berlan"
};



void setup()
{

  size(1600, 900);
  smooth();
  controlP5 = new ControlP5(this);

   initControls(); //fait appel à la Tab Controls

 

}

void draw()
{
  background(0); // couleur du fond
  circle();
  counts();

  //Création d'une fenêtre pour texte du toggle Infos +
  fill(c);
  // Fenêtre infos + (x,y,largeur,hauteur)
  rect(70, 30, 200, 400);
 






ControlP5 controlP5; //ici j'étais sur un autre onglet

void initControls()
{

  controlP5 = new ControlP5(this);

  // paramètres du toggle : nom, valeure par défaut (boolean), x, y, largeur, hauteur
  controlP5.addToggle("Infos +", false, 30, 30, 32, 20);
  controlP5.addToggle("Acces", false, 30, 70, 32, 20);
  controlP5.addToggle("Horaires", false, 30, 110, 32, 20);
  controlP5.addToggle("Map", false, 30, 150, 32, 20);
}

void controlEvent(ControlEvent theEvent) {

  if (theEvent.isController()) {
    print("control event from : "+theEvent.controller().name());
    println(", value : "+theEvent.controller().value());
  }

  if (theEvent.controller().name()=="Infos +") {
    if (theEvent.controller().value()==1)

      c = color(105);
     
     else c = color(0);
  }
    if (theEvent.controller().name()=="Acces") {
    if (theEvent.controller().value()==1)

      c = color(105);
     
     else c = color(0);
  }
    if (theEvent.controller().name()=="Horaires") {
    if (theEvent.controller().value()==1)

      c = color(105);
     
     else c = color(0);
  }
    if (theEvent.controller().name()=="Map") {
    if (theEvent.controller().value()==1)

      c = color(105);
     
     else c = color(0);
  }
}

void counts()
{
  textAlign (CENTER); //Texte Central
  textSize(40);
  fill(0, 255, 255);
  text(counter, width/2, height/2);
}
void mouseClicked()
{
  counter++;
  if (counter > 50) {
    counter =1;
  }
}


void circle()
{
  noStroke();
  for (int i = 0; i<top50.length; i++)
  {
    float value = 5;
    float m = map(value, 0, 400, 0, 10); //Réglage de la fluidité du strat
    //float m = map(value, 0, width, 0, 10); //Réglage de la fluidité du strat : ici en mode plus éclaté

    pushMatrix();
    translate(width*.5, height*.5); //Placement du strat sur l'interface
    rotate(radians(180+(i*7.2))); //Angle incident des mots sur les cercles
    textSize(14);//taille texte (unique)
    //textSize(26-(i*.5)); // Taille du texte (grand->petit)
    fill(0*(i+1), 100*(i+25), 100*(i+1)); // intensité des couleurs des strats
    ellipseMode(CENTER);

    textAlign(LEFT);
    translate(-600*.25, 0); //Taille du strat général
    rotate(radians(180));
    ellipse(-30+(m*mouseX), -5+(m*mouseY), top50[i].length(), top50[i].length());
    fill(255, 255, 255); // couleur des mots en attentes
    if (counter-1 == i)
    {
      fill(0, 255, 255); //couleur du mot sélectionné
      text(top50[counter-1], m*mouseX, m*mouseY);
    }
    text(top50[i], m*mouseX, m*mouseY);
    popMatrix();
  }
}

Voici pour l'interface de choix (je vais remplacer le string par une liste Excel beaucoup plus simple à gérer), je me suis inspiré d'un Applet existant que j'ai modifié (d'où le compteur qui ne sert à rien mais je ne sais pas encore comment l'enlever).
Je n'ai pas mis la partie Map unfolding car il est sur une autre applet (qui marche) je comptait la faire intervenir avec la libraries "napplet" (je ne sais pas trop encore comment). Merci cgiles en tout cas!


Antoine Edel, newbee des prairies numériques.

Hors ligne

 

#4 2012-10-01 23:27:22 Re : Besoin d'aide avec librairie ControlP5

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

Re: Besoin d'aide avec librairie ControlP5



le controlEvent est éxécuté une fois, lorsque le controlleur change d'état, donc pendant une seul image.
Il faut que lorsque un controlleur est modifié tu places en true ou false une variable booléenne, qui déclencherai via un if le fait de dessiner ou non quelque chose au sein du draw.

Hors ligne

 

#5 2012-10-01 23:38:11 Re : Besoin d'aide avec librairie ControlP5

tonioux
membre
Lieu: Bordeaux
Date d'inscription: 2012-10-01
Messages: 12
Site web

Re: Besoin d'aide avec librairie ControlP5



donc ça ressemblerais à

boolean a = false;
if (!a) {
   c = color(0);
}
a = true;
if (a) {
  text("quelque chose" x,y,...);
fill (valeure);
rect(...);
}

c'est ça? mais est-ce que on peut rentrer plusieurs infos entre les accolades du " if (theEvent.isController())" parce que visiblement quand je lance le script seule la première ligne se lance... (je dois me tromper du coup)


Antoine Edel, newbee des prairies numériques.

Hors ligne

 

#6 2012-10-02 07:20:48 Re : Besoin d'aide avec librairie ControlP5

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

Re: Besoin d'aide avec librairie ControlP5



il y a qu'un truc qui se déclenche car tu places pas d'accolade {} dérrière ton   if (theEvent.controller().value()==1) et avant et après le else. Mais c'est pas vraiment fait pour placer du code, plutôt pour être informé d'un changement d'état

Hors ligne

 

#7 2012-10-02 16:35:15 Re : Besoin d'aide avec librairie ControlP5

tonioux
membre
Lieu: Bordeaux
Date d'inscription: 2012-10-01
Messages: 12
Site web

Re: Besoin d'aide avec librairie ControlP5



Si je place les accolades avant et après le elese c'est simple j'ai le message d'erreur "expecting RCURLY, found 'else' ". Du coup l'accolade derrière if (theEvent.controller().value()==1) est inutile. Par contre je n'arrive pas à utiliser la variable boléenne, je ne sais pas où l'appliquer...


Antoine Edel, newbee des prairies numériques.

Hors ligne

 

#8 2012-10-02 20:03:27 Re : Besoin d'aide avec librairie ControlP5

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

Re: Besoin d'aide avec librairie ControlP5



donc voici le code qui marche chez moi :
tout d'abord avant le setup je crée une booléenne : boolean infoBool=false;
dans le draw j'ajoute ceci =

Code (processing) :

  if (infoBool) {
     fill(c);
    rect(70, 30, 200, 400);
    textAlign(LEFT);
    fill(255);
    text("Helloworld", 70, 50);
  }

et enfin mon control event prend cette forme :

Code (processing) :

if (theEvent.controller().name()=="Infos +") {
    if (theEvent.controller().value()==1) {

      c = color(105);
      infoBool=true;
    }
    else {
      infoBool=false;
      c = color(0);
    }
  }

Hors ligne

 

#9 2012-10-02 20:24:43 Re : Besoin d'aide avec librairie ControlP5

tonioux
membre
Lieu: Bordeaux
Date d'inscription: 2012-10-01
Messages: 12
Site web

Re: Besoin d'aide avec librairie ControlP5



Je vais essayer ça! effectivement ça m'a l'air cohérent, je n'ai pas du tout pensé au Boléen. Et sinon j'ai une petite question que j'ai rarement vue sur les forums ou du moins les réponses étaient un peu ambigües, peut-on faire appel à une applet Processing extérieure? par exemple à un moment dans le programme je veux démarer une autre applet en même temps, est-ce possible? (j'ai vu que certains utilisent la librarie napplet est-ce la bonne solution?)


En tout cas je te dis un grand merci cgiles!


Antoine Edel, newbee des prairies numériques.

Hors ligne

 

#10 2012-10-03 07:23:34 Re : Besoin d'aide avec librairie ControlP5

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

Re: Besoin d'aide avec librairie ControlP5



ta question ressemble assez à ça :
http://codelab.fr/3544

et je t'en prie

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024