Bonjour,
J'ai réussi à créer une boule sur processing quand je clique sur ma souris mais lorsque je ne clique plus celle-ci s'efface...
Comment je pourrai faire pour qu'elle reste sur mon écran après avoir appuyé ?
Hors ligne
la solution est certainement avec ton
background();
bascule le dans le setup(){}
sinon colle nous ton sketch.
Hors ligne
Voici mon sketch.
Plateforme sol=new Plateforme(0,640,900,40);
Homme homme=new Homme (40,590,80,80);
Plateforme plateforme=new Plateforme (100,400,70,20);
Finish finish=new Finish (830,610,40,40);
PImage wallpaper;
PImage persoG;
PImage persoD;
PImage persoface;
PImage nouille;
void setup(){
size(900,670);
background(100,100,100);
wallpaper= loadImage("wallpaper1.jpg");
image(wallpaper,0,0);
persoG= loadImage("marchegauche.png");
persoD= loadImage("marchedroite.png");
persoface= loadImage("face.png");
nouille= loadImage("nouille.png");
}
void draw(){
image(wallpaper,0,0,900,670);
sol.affiche();
homme.affiche();
homme.bouge();
homme.saut();
homme.collision();
homme.keyPressed();
finish.affiche();
plateforme.affiche();
if (mousePressed){
ellipse (mouseX,mouseY,50,50);
}
}
Hors ligne
Si la boule s'efface lorsque l'on cesse de cliquer sur la souris, c'est parce que la condition dans ton draw dit "si le clic est appuyé, alors affiche la forme": elle vérifie si c'est vrai pour chacune des itérations du draw.
Une solution possible serait d'utiliser les variables booléennes, qui pourrait permettre d'étendre le temps d'apparition au gré de conditions arbitrairement établies. Un exemple concret:
boolean clic = false; void setup(){ size(900, 670); } void draw(){ background(255); if(mousePressed){ clic = true; } if(clic){ ellipse(mouseX, mouseY, 50, 50); } }
Cela veut dire "si on a cliqué au moins une fois, alors on affichera tout le temps la figure".
Hors ligne
D'accord, merci beaucoup !!
Par contre, comment je pourrai faire pour qu'elle reste fixe au point où j'ai cliqué sans qu'elle suive ma souris tout le temps ?
Hors ligne
eh bien... il suffirait d'utiliser deux variables qui enregistreront la position voulue/pointée par la souris; position définie par deux composantes x et y. je te laisse chercher
Dernière modification par jojolaglaise (2017-04-02 18:06:16)
Hors ligne
J'ai créé des variables :
int x=mouseX;
int y=mouseY;
et je l'ai ai mis dans un "if"...
if(clic){
ellipse(x,y,50,50);
}
Mais c'est encore pire... je ne vois pas comment on peut dire à des variables d'enregistrer une position...
Hors ligne
Et quelle est la condition pour "enregistrer" une position?
Cliquer pardi! Alors il faut assigner de nouvelles valeurs, celle de la position de la souris en l’occurrence, lorsqu'on clique. Donc il faut modifier les valeurs des variables si on clique, ça implique alors qu'on écrit tout dans la condition (je reprends le morceau de code):
boolean clic = false; int posX, posY; void setup(){ size(900, 670); } void draw(){ background(255); if(mousePressed){ clic = true; posX = mouseX; posY = mouseY; } if(clic){ ellipse(posX, posY, 50, 50); } }
Hors ligne
Effectivement, ça fonctionne
Merci beaucoup en tout cas !!!
Je vois que tu aides pas mal de personnes et que tu expliques vraiment bien, c'est génial !
Hors ligne
Obrigado amigo!
Hors ligne
Pages: 1