![]() |
Timer.Interval<1
Hallo zusammen,
ich habe ein kleines Problem mit der Timer-Komponente. Ich möchte einen Interval haben, der kleiner 1 ist. Ist mir jedoch klar, dass das nicht klappt (oder doch?). Nun habe ich versucht, eine "eigene" Timer-Komponente mit der Procedure sleep zu simulieren. Ich habe eine eigene Procedur erstellt, die am Ende die Procedure sleep ausführt und dann sich selbst wieder aufruft. Jedoch schläft dabei das Programm ein. Kennt jemand eine Möglichkeit, kleinere Intervalle als 1ms zu realisieren? Schon mal danke für jegliche Hilfe, Martin.Ghosts |
Re: Timer.Interval<1
das macht keinen Sinn, alles unter ca. 20 ms macht keinen Sinn weil deine Windows deinem Programm in der Regel nicht viel mehr Zeit am Stück gibt. Wozu brauchst du einen so kleinen Interval? Da macht es doch eher sein das ganze in einer Schleife auszuführen ohne darin zu warten.
|
Re: Timer.Interval<1
Ich bin ein klassisches Pongspiel am programieren und will den Ball immer um einen Pixel verschieben. Mit einem Interval von 1 ist er mir aber zu langsam. Bei einer Verschiebung von mehr als einem Pixel kann es passieren, dass der Ball teilweise den Rand des Formulars überschreitet.
|
Re: Timer.Interval<1
In DelphiX soll ein schnellerer Timer drin sein.
Aber warum immer nur ein Pixel ... mach doch Mehrere Du kannst dir natürlich auch mit QueryPerformanceCounter, RealTimeStampCounter, oder ... was eigenes aufbauen. |
Re: Timer.Interval<1
Zitat:
Delphi-Quellcode:
if Ball.X <= linke_Wand then
// links else if Ball.X >= ... else if Ball.Y <= ... |
Re: Timer.Interval<1
sinnvoller wäre es wenn du die Position andauern um eins verschiebst (in einer Extra Variablen) und in geringeren Abständen dann den Ball zeichnest. Denn kleiner als 1ms macht da keinen Sinn, das sieht man nicht und die cpu wird vermutlich auch zu 100% ausgelastet sein. 25 Bilder (also 25 mal verschieben deines Balles) reicht vollkommen.
|
Re: Timer.Interval<1
esist doch auch möglich, ob bei einer Verschiebung von 20 Pixeln nach links z.b. der linke rand erreicht wird (x<=0) .. da muss man doch net jeden Pixel einzelnd prüfen.. so käme man bei größeren Computerspielen auch net weit ^^
Dann reicht ein Intervall von 20ms gut.. |
Re: Timer.Interval<1
Zitat:
Zitat:
|
Re: Timer.Interval<1
ich hab die Vermutung das du versuchst alle 1 ms ein TImage oder etwas anderes zu malen. Unter Windows dauert das malen aber von allem am längsten. Das heißt du solltest das Malen nur so häufig machen wie es wirklich nötig ist (also maximal 25 mal in der Sekunden). Ansonsten einfach nur die Position berechnen aber nichts verschieben
|
Re: Timer.Interval<1
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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 by Thomas Breitkreuz