Stopper un applet - Java - Programmation
Marsh Posté le 17-09-2009 à 18:48:45
Le code n'est pas correct, la méthode paint() peut être appelée à tout moment par le système et tu ne dois pas l'appeler toi-même. Vu que tu appelles repaint() dans paint() et que repaint() est un appel disant au système qu'il doit appeller paint(), paint() est appelé en boucle à l'infini, d'où ton animation en boucle.
Tu peux juste appeler repaint() pour notifier le système quand il y a un changement au niveau de l'affichage afin que celui-ci appelle paint().
D'autre part, il est inutile d'appeler stop() quand le traitement est fini (aussi bien dans run() que dans paint()) puisque stop() est sensé arrêter le thread mais le thread s'arrête de lui-même lorsqu'il est fini.
Enfin, la méthode stop() est sensée arrêter tous les threads en cours. Ici tu n'arrêtes pas le thread, tu ne fais qu'enlever sa référence mais il continue à tourner. Tu dois appeler Thread.interrupt() ou changer une variable testée régulièrement dans le thread afin d'indiquer à celui-ci qu'il doit s'arrêter.
Si j'ai le courage et le temps je recoderai ta classe proprement plus tard pour te montrer comment on doit coder une animation dans une Applet.
Marsh Posté le 18-09-2009 à 15:23:38
Ok, merci pour ta réponse, j'ai compris d'où vient le problème.
Ne te casse pas la tête à essayer de refaire ça, je suis apssé à autre chose de toutes façons.
Marsh Posté le 18-09-2009 à 21:33:23
J'avais quand même codé ça hier soir alors... Je pense que c'est quand même important car ton code est totalement erroné. C'est vrai que programmer une Applet ce n'est pas pour les débutants! Il faut savoir comment fonctionnent les threads et le cycle de vie d'une Applet.
Donc voilà le code d'une animation de zoom sur une image affichée au centre de l'applet:
Code :
|
L'animation est temporairement arrêtée quand l'applet est arrêtée (stop). Elle s'exécute une seule fois, jusqu'à ce que l'applet est réinitialisée (init).
Marsh Posté le 16-09-2009 à 11:14:43
Bonjour, je suis débutant en Java, et je bloque sur un exercice tiré d'un livre.
Le but du programme était à la abse d'afficher une image 2 fois, en petit et en grand. Jusque là j'ai réussi (code du livre en même temps...)
Maintenant j'ai eu envie de faire varier la taille de la seconde image 'lentement' à l'ouverture de l'applet.
A l'ouverture donc, l'image s'affiche en petit puis grandit, grandit, et... l'applet redémare.
Comment faire pour qu'une fois que l'image a atteint sa taille maxi (définie par la dernière itération de la boucle for), l'applet se stoppe mais sans se fermer ?
Voici le code...