dachu
Messages postés8Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention 5 décembre 2005
-
26 nov. 2005 à 14:28
jcodeunpeu
Messages postés365Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention 2 décembre 2006
-
27 nov. 2005 à 12:18
Bonjour,
Voilà je réalise un petit jeu comme projet de fin d'année pour mes études. J'utilise JBuilder 2005 et donc travaille sur un projet avec une interface graphique.
J'ai besoin d'une fonction qui marque un temps d'arret (qu'on lui indique en millisecondes par exemple). J'ai trouvé les 'wait()' et les 'sleep()' des threads, mais cela ne fonctionne pas comme cela devrait !
Je vous montre le morceau de code concerné, ce sera plus simple à expliquer :
Voila, en fait à l'exécution je dois cliquer sur un bouton pour lancer le jeu. A cause de l'attente, le bouton reste enfoncer et rien ne se passe. Les fonctions marchent bien indépendemment pourtant et le bouton lance bel et bien le jeu car quand j'enleve les 'pause", tout fonctionne normalement mais beaucoup trop vite ! Normalement, je devrais avoir une image qui se change, puis qui revient à son état initial, mais elle ne bouge pas du tout...
jcodeunpeu
Messages postés365Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention 2 décembre 20062 27 nov. 2005 à 12:06
Salut,
on a la facheuse habitude je vois de ne rien mettre entre les crochets des catch exception tant on est sur que l'erreur est prévue ...
je commencerai donc par mettre un leger system.out.print dans Exception de la méthode patienter juste pour voir si il n'y a rien qui ressemblerait à 'current thread not owner ' ...
ou 'illegal state ... quelquechose ...'
en suite, pourrais tu montrer le corps de ta méthode run(),
fais un petit teste, remplace mommentanément la fonction jouerSuite par :
void jouerSuite (){
long t1 = System.currentTimeMillis();
int i = 0;
for(; i < 2000000000;i++)
if((System.currentTimeMillis() - t1) > 500) break;
System.out.println("fini : i = " + i);
}
tu pourras voir combien de fois tu as appelé les méthodes contenu dans jouerSuite()
si tu allume 5 000 000 de fois une ampoule en une demi-seconde et que tu ne la vois pas s'éteindre, rassure toi, c'est normal
A+ ciao.
Ps : montre run() et on pourra rectifier ce qui ne va pas, ok ?
dachu
Messages postés8Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention 5 décembre 2005 27 nov. 2005 à 12:11
Bonjour,
Merci de vos réponses, c'est vraiment bien gentil !
Je viens tout juste de trouver la solution, la nuit porte conseil ;-) En fait, j'ai séparé mon programme en plusieurs méthodes dont une pour tout ce qui est interface graphique et donc listener, actionperform, ... et dont une autre gère uniquement le jeu quand il est lancé ! Du coup, quand je fais une pause, cela fonctionne sans pénaliser le graphique... C'était tout bête, mais bon ;-)
dachu
Messages postés8Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention 5 décembre 2005 26 nov. 2005 à 15:20
C'est bien ce qu'il me semble aussi et pourtant ça ne marche pas ! Si je sépare deux 'println()' par une fonction pour attendre, ca fonctionne et pourtant dans ce cas-ci ça ne marche pas... Et les fonctions que j'appelle fonctionnent bel et bien donc c'en est presque incompréhensible !