Animation

fansept Messages postés 6 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 17 juin 2007 - 18 déc. 2004 à 18:03
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 19 déc. 2004 à 01:01
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

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
18 déc. 2004 à 19:25
Essaye d'utiliser un timer...

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
18 déc. 2004 à 21:45
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;
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
18 déc. 2004 à 21:52
- 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 ! ;)
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
18 déc. 2004 à 23:54
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
19 déc. 2004 à 00:06
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 ! ;)
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
19 déc. 2004 à 01:01
Noté, julio! :approve)

Merci!
0
Rejoignez-nous