AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnIdle-Timer

Ein Thema von Cöster · begonnen am 13. Sep 2006 · letzter Beitrag vom 14. Sep 2006
 
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

OnIdle-Timer

  Alt 13. Sep 2006, 14:52
Hi!

Mein Spiel arbeitet bisher mit einem normalen Timer mit dem Intervall 13. Bei jedem Timer-Aufruf wird ein Ball auf dem Bildschirm um eine bestimmte Anzahl Pixel in eine bestimmte Richtung (abhängig von der gedrückten Pfeiltaste) verschoben.

Nun wollte diesen durch einen OnIdle-Timer ersetzen, damit die Positionen so oft wie möglich neu berechnet werden und neu gezeichnet wird.
Wie sollte ich das dann am besten machen?

Ich hab es mir so gedacht:
Ich habe 2 Variablen: Start und End vom Typ Integer. Ich speicher zu Beginn jedes Aufrufs der OnIdle-procedure GetTickCount unter End, ermittle mittels End - Start die vergangene Zeit seit dem letzten Aufruf und multipliziere diese mit einem Geschwindigkeitsfaktor (der kleiner als 1 ist). Daraus ergibt sich die aktuelle Position, die unter einer Variablen gespeichert wird. Zum Zeichnen muss diese durch Trunc() noch auf einen Integer gerundet werden. Start wird irgendwann während der procedure auf End gesetzt, aber erst nachdem die Zeitdifferenz berechnet wurde.

Ist die Überlegung gut? Wäre es schneller, statt mit einer Zahl kleiner als 1 zu multiplizieren durch eine Zahl größer als 1 zu teilen? Wird die ganze procedure vielleicht dadurch ausgebremst, dass mit Floats gerechnet wird? Das war ja bei dem Standard-Timer nicht so. Da hab ich einfach nur (wenn VK_Right gedrückt ist) PositionX + 5 gerechnet um die neue Position zu ermitteln. Sollte ich statt GetTickCount TimeGetTime benutzen? Es ist genauer, aber ist es auch schneller ermittelt?

Ich hoffe, ich könnt mir sagen, wie ich das möglichst performant hinkriege.
  Mit Zitat antworten Zitat
 


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 22:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz