Annonce

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


#1 2012-09-18 23:30:20 mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

mousePressed() en mode noLoop()?



Salut à tous,

je voulais avoir votre avis sur un problème auquel je me heurte sur processing.
Quand je tape la commande noLoop() dans la fonction setup(), la fonction mousePressed() ne fonctionne que si elle contient redraw(). Si elle contient des commandes basiques (type rect(), background(), ou autre), elle ne les exécute pas. Même problème si elle est censée appeller une fonction que j'ai écrite moi-même. Seule redraw() fonctionne.

Est-ce que c'est une fatalité ou y'a-t-il quelque chose que je ne comprends pas?

J'ai beau chercher, tous les tutoriels sur les intéractions avec la souris sont en mode loop(). C'est peut-être un indice ceci dit!

Merci aux patients qui auraient une réponse.

bouclettes

Hors ligne

 

#2 2012-09-18 23:34:44 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



mets ta fonction noLoop(); dans le draw, et appel un loop(); dans ton mouseReleased ou pressed();

Hors ligne

 

#3 2012-09-18 23:44:55 Re : mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: mousePressed() en mode noLoop()?



salut,

merci pour ta réponse. du coup j'ai essayé ça:

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

void draw()
{
  noLoop();
  background(0);
  fill(255);
  rect(100,100,20,20);
}

void mousePressed()
{
  loop();
  background(0);
  fill(255);
  rect(100,200,20,20);
}


mais ça marche pas. Il serait censé afficher un deuxième carré blanc plus bas quand je clique.
Je me suis planté sur l'endroit où placer les loop(), noLoop()?

Hors ligne

 

#4 2012-09-19 06:08:55 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



teste ça :

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

void draw()
{

  background(0);
  fill(255);
  rect(100, 100, 20, 20);
  if (mousePressed) {

    background(0);
    fill(255);
    rect(100, 200, 20, 20);
  }
}

Hors ligne

 

#5 2012-09-19 08:12:22 Re : mousePressed() en mode noLoop()?

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: mousePressed() en mode noLoop()?



ou ça:

boolean play = false;

void setup(){
  size(400, 400);
  
  background(0);
  fill(255);
  rect(100, 100, 20, 20);
}

void draw(){
  if (play) {
    background(0);
    fill(255);
    rect(random(width-20),random(height-20), 20, 20);
    play=false;
  } 

  noLoop();
}

void mousePressed(){
  play=true;
  loop();
}

ici le code ne loop pas en continue et on ne revient pas au dessin initial

Hors ligne

 

#6 2012-09-19 16:23:20 Re : mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: mousePressed() en mode noLoop()?



Merci pour vos réponses.
Pour vous expliquer un peu, parce que là je me rends compte que c'est un peu obscur comme question, je voudrais réaliser des widgets (curseurs, boutons) qui fonctionne même en mode noLoop() et donc qui ne font pas directement monter le processeur à 10% d'utilisation pour un widget.

Chouettes astuces, je vais continuer à les essayer.

bouclettes

Hors ligne

 

#7 2012-09-20 10:41:58 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



le truc c'est que pour redessiner ton gui tu dois passer par un loop() ne serait ce qu'une frame

Hors ligne

 

#8 2012-09-20 18:10:43 Re : mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: mousePressed() en mode noLoop()?



Ouais, c'est ça! ça me parait évident maintenant mais au début...
Du coup, je me demande s'il est vraiment possible sans surcharger le processeur et donc de ramer de vouloir créer plusieurs sliders, plusieurs boutons? L'idée finale étant de créer un logiciel de régie son fiable et léger.

Si certains ont déjà lu d'autres post que j'ai lancé, ils vont se dire que je radote big_smile

Hors ligne

 

#9 2012-09-21 09:31:26 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



en utilisant un mode de rendu exploitant la carte graphique plutôt que du p2d, ça roulera bien mieux.
Est ce que tu as testé la version beta 2 , et la librairie control p5 ?

Hors ligne

 

#10 2012-09-21 10:34:17 Re : mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: mousePressed() en mode noLoop()?



Effectivement, en utilisant opengl ça diminue presque de moitié la charge du processeur. J'ai justement essayé sur les exemples de controlP5. Le code pour knob au repos prend 20% environ du proc. Et il n'y a que 2 rotatifs!! Avec opengl, ça descend vers 14% mais bon, ça reste trop pour moi. Des rotatifs, il va m'en falloir plus que 2!

Pas tester la version beta 2, toujours à la version 1.5.1
Une amélioration de ce côté là?

Hors ligne

 

#11 2012-09-21 15:16:26 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



ben c'est un des grands changements, plus de mode processeur, que du mode opengl

Hors ligne

 

#12 2012-09-22 17:15:40 Re : mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: mousePressed() en mode noLoop()?



Ok, merci pour les tuyaux! Je vais voir avec cette nouvelle version ce que ça donne.
Et puis sinon, ben apprentissage c++! big_smile

Hors ligne

 

#13 2012-09-23 13:45:16 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



Si tu veux passer a du c++, va directement à OpenFrameworks.
Mais est ce que ta consommation de processeur est linéaire par rapport a ton nombre de potards ( 1 potard = 7%,2 potard = 14% 3 potard =21 %.
Sinon passe a la teensy pour te faire une interface en hardware via midi et juste faire un moteur en processing big_smile

Hors ligne

 

#14 2012-09-23 14:15:20 Re : mousePressed() en mode noLoop()?

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: mousePressed() en mode noLoop()?



Effectivement, OF m'intéresse particulièrement. Mais bon, je vais déjà essayer de bien intégrer les principes de POO. Un peu fastidieux les programmes consoles, mais je crois que ça vaut le coup.

Tu as raison, je n'ai pas fait vraiment ce test en multipliant les objets. J'ai perdu l'espoir avant big_smile, je vais essayer pour en avoir le coeur.

Merci pour l'info, je vais me renseigner sur teensy. Une sorte de mini-arduino?

Hors ligne

 

#15 2012-09-23 14:41:00 Re : mousePressed() en mode noLoop()?

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

Re: mousePressed() en mode noLoop()?



voici ce qu'est la teensy : http://codelab.fr/3598
cool

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024