So schwer kann das doch nicht sein ...
Nimm den Timer als Taktgeber und das Intervall stellst du auf den ggT aller Animationsintervalle.
Code:
Animation1 1000ms
Animation2 1500ms
Animation3 2000ms
Animation4 2500ms
ggT => 500ms
Animation1 => 2 Zyklen
Animation2 => 3 Zyklen
Animation3 => 4 Zyklen
Animation4 => 5 Zyklen
Für die Animation kannst du ja Klassen erstellen, die z.B. wie folgt aufgebaut sind:
Delphi-Quellcode:
TCustomAnimation = class
private
FTaktCount : integer;
FZyklen : integer;
protected
procedure DoAnimation; virtual; abstract;
public
procedure Taktung;
property Zyklen : integer read FZyklen write FZyklen;
end;
procedure TCustomAnimation.Taktung;
begin
Inc( FTaktCount );
if FTaktCount >= FZyklen then
begin
FZyklen := 0;
DoAnimation;
end;
end;
und bei TimerEvent
Delphi-Quellcode:
procedure TForm1.Timer1Timer( Sender : TObject );
var
idx : integer;
begin
for idx := 0 to AnimationList.Count - 1 do
TCustomAnimation( AnimationList[ idx ] ).Taktung;
end;
Ein Timer, kein Sleep, kein Freeze, alles schick
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)