Animation

Signaler
Messages postés
6
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
17 juin 2007
-
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
Je fais tourner un segment
de droite autour d'une de ses extrémités (succession de dessin en une couleur puis avec la couleur de fond avec un "sleep" de 40 ms entre les deux dessins, l'angle de rotation entre deux positions étant par exemple PI/36).
Pour l'instant je ne peux l'arrêter qu'en fixant dans le code le nombre de tours à faire.
je cherche en vain comment faire pour commander l'arrêt à un moment queconque,soit après un nombre entier de tours ou à tout moment pendant un tour(par un ordre quelconque) ou mieux à n'importe quel moment,( le segment restant figé sur l'écran) avec la possibilité de le rfaire redémarre par un autre ordre.
j'ai beaucoup phosphoré sur ce sujet mais le résultat est nul.

6 réponses

Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Essaye d'utiliser un timer...

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
var Tourne : Boolean;
...
If (Tourne=true) then
begin
// ton code qui le fait tourner...
end;

et dans un bouton, par exemple:

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Tourne=true) then Tourne := false
else Tourne := true;
end;
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
- Le timer empêche les Sleep(x) qui bloquent l'appli. On peut bien sur utiliser Application.ProcessMessages pour éviter cela, mais cela rajoute une ligne de code (trop dur ! ;) ).

- Le timer possède déjà une prorpiété Enabled qui évite aussi de devoir déclarer une variable globale et de faire des tests dans la procedure...

La solution du Timer me semble donc la plus adaptée... :)

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Caribensila :
reduit ton

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Tourne=true) then Tourne := false
else Tourne := true;
end;

en

procedure TForm1.Button1Click(Sender: TObject);
begin
Tourne := not Tourne;
end;

:D

sinon chui OK pour le timer. si tu dois passer en dessous de 500ms en interval : prends le TmmTimer de Kenavo :!!

N'oubliez pas de cliquer sur Réponse acceptée lorsque ma réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Effectivement JulioDelphi, le TmmTimer de Kenavo est beaucoup plus précis ;)
Merci à lui de l'avoir créé, et à toi d'avoir rappelé son existance ici :)

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Noté, julio! :approve)

Merci!