Autor Beitrag
Waldkauz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Di 26.05.09 18:24 
Hallo!

Also, ich hab da ein kleines Spiel programmiert, wo ein Ballon (horizontal) über eine Landschaft fliegt (also ein Image auf dem anderen).
Hab das mit einem Timer programmiert.
Jetz möchte ich mit einer Scrollbar die "Geschwindigkeit" des Ballons erhöhen bzw. verkleinern. Sprich je weiter man den Scrollbar nach rechts zieht, desto schneller wird der Ballon.
hab das also folgendermaßen gemacht:
ausblenden Delphi-Quelltext
1:
Timer1.Intervall := ScrollBar1.Position;					
Das Problem ist jetzt, dass sozusagen die "höchste" Geschwindigkeit dem Intervall 1 entspricht, was aber trotzdem noch recht langsam ist.

Gibt es da auch eine andere Möglichkeit?

mfg

Markus

Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 26.05.2009 um 19:28
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 26.05.09 18:30 
Moin!

user profile iconWaldkauz hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem ist jetzt, dass sozusagen die "höchste" Geschwindigkeit dem Intervall 1 entspricht, was aber trotzdem noch recht langsam ist.

Gibt es da auch eine andere Möglichkeit?
Das Intervall 1 schafft der (Windows-)Timer bereits nicht, irgendwo in der Gegend um 50 ist Schluss. :idea:

VCL-basiert geht das nicht anders, als das Image um mehr als 1 Pixel zu bewegen. :nixweiss:

Wenn dir das nicht "schön" genug aussieht, dann muss du auf DirectX/OpenGL ausweichen.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Di 26.05.09 18:37 
naja...macht ja nix...Danke!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 26.05.09 20:37 
Wenn du es flüssiger haben willst, dann nimm nicht (so hörte es sich bei dir ja an) visuelle Komponenten (TImage) und schiebe die in der Gegend umher. Das flackert unnötig und ist halt nicht so schnell.

Mit einer TPaintBox und OnPaint lassen sich relativ flüssige Bewegungen realisieren. Ganz bekommt man auch da das Flackern nicht in den Griff, aber zumindest läuft es besser.
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mi 27.05.09 13:18 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du es flüssiger haben willst, dann nimm nicht (so hörte es sich bei dir ja an) visuelle Komponenten (TImage) und schiebe die in der Gegend umher. Das flackert unnötig und ist halt nicht so schnell.

Mit einer TPaintBox und OnPaint lassen sich relativ flüssige Bewegungen realisieren. Ganz bekommt man auch da das Flackern nicht in den Griff, aber zumindest läuft es besser.


vielen dank. die TPaintBox is besser
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.05.09 13:25 
Dazu kannst du (falls du das noch nicht hast) DoubleBuffered in OnCreate des Formulars auf True setzen, das reduziert das Flackern nochmal.

Allerdings macht das bis Delphi 7 Probleme, wenn du den XP Style aktiv hast. Dann funktioniert das problemlos erst ab D2005 oder D2006.
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mi 27.05.09 18:14 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dazu kannst du (falls du das noch nicht hast) DoubleBuffered in OnCreate des Formulars auf True setzen, das reduziert das Flackern nochmal.

Allerdings macht das bis Delphi 7 Probleme, wenn du den XP Style aktiv hast. Dann funktioniert das problemlos erst ab D2005 oder D2006.


DoubleBuffered hatte ich sowieso auch drin