Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: fortlaufende Animationen - ohne Freeze

  Alt 13. Feb 2012, 22:42
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)
  Mit Zitat antworten Zitat