AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi fortlaufende Animationen - ohne Freeze
Thema durchsuchen
Ansicht
Themen-Optionen

fortlaufende Animationen - ohne Freeze

Ein Thema von Muellermilchtrinker · begonnen am 12. Feb 2012 · letzter Beitrag vom 13. Feb 2012
Antwort Antwort
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: fortlaufende Animationen - ohne Freeze

  Alt 13. Feb 2012, 19:22
Warum zählst Du extra eine globale Variable hoch, anstatt die Systemuhr für Dich die vergangene Zeit angeben zu lassen?
Abgesehen davon finde ich Deinen Ansatz recht verworren. Warum organisierst Du die Blinkattacken Deiens Würfels nicht in einem eigenen Objekt und später die Rotation in einem anderen. Dann kannst Du diese Animationen als Objekte in eine Liste erzeugen und Deinen Timer in regelmäßigen kurzen Abständen diese Liste abarbeiten lassen.
Deinen Timer hat doch nicht zu interessieren was Deine Objekte anzeigen, er hat nur dafür sorge zu tragen, dass die Objekte immer wider mal angestuppst werden um den Bildschirm zu aktualisieren.
Wenn Du noch die Parentform an Deine Objekte übergibst, kannst Du direkt aus den Objekten heraus das Neuzeichnen der Form oder besser Übergabe der Zeichenfläche udn refresh der Zeichenfläche auslösen.

Tut mir leid, dass ich gerade eher den Eindruck habe als ob Du dabei bist Dein Projekt ein wenig zu einem Nudelgericht zu verdrehen.
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#2

AW: fortlaufende Animationen - ohne Freeze

  Alt 13. Feb 2012, 19:54
Naja die Delayfunktionen die himitsu verlinkt hat, die produzieren auch freezes.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: fortlaufende Animationen - ohne Freeze

  Alt 13. Feb 2012, 21: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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.400 Beiträge
 
Delphi 12 Athens
 
#4

AW: fortlaufende Animationen - ohne Freeze

  Alt 13. Feb 2012, 22:09
Zitat:
Deine Variante mit Delay im Timer ist auch recht interessant. Damit werde ich auch mal experimentieren.
Falsch verstanden.

Timer oder Sleep

bzw. Delay statt Sleep
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: fortlaufende Animationen - ohne Freeze

  Alt 13. Feb 2012, 22:55
@Sir Rufo: Ja, so ungefähr habe ich mir das auch vorgestellt. Dann ist es sauberer Code der am Ende auch leicht erweiterbar ist. War selbst heute nur zu faul dies in Code zu packen, da ich nebenher an einem anderen Projekt gearbeitet habe.

@himitsu: Äh, nein nicht falsch verstanden, sorry, nur falsch geschrieben... meinte Delay statt Timer, bzw. Sleep anstatt von Delay mit Timer oder so... Ansonsten wäre ich ja selbst auf genau das reingefallen was ich vorher auch bemeckert hatte... klar soweit?
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz