Toon posts:

[delphi] timer & animaties

Pagina: 1
Acties:

Verwijderd

Topicstarter
deze topic lijkt een beetje op wat ik al had gepost.
Ik wil dat mijn programma's beter preformance hebben.
Het zit zo ik laat via mijn timer wat rondjes en andere objecten lopen(bewegen, animeren).
Alleen doet ie de heletijd een redraw, wat vervelend is omdat de graphics flikkeren.
Nou werd er al gezegd dat ik geen timer meer mag gebruiken, alleen wat dan wel. Ik heb al op het internet gekeken maar daar vond ik nooit zoveel van.

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 01-09 17:40

Knutselsmurf

LED's make things better

Dat flikkeren kan je tegengaan door in je FormCreate de volgende regel op te nemen:
code:
1
  DoubleBuffered:=True;

- This line is intentionally left blank -


Verwijderd

Topicstarter
tnx, dat hielp.
al wil ik nog wel de alternative weten op een timer, ik ben benieuwd

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 01-09 17:40

Knutselsmurf

LED's make things better

Op donderdag 25 juli 2002 10:41 schreef Cazzz het volgende:
tnx, dat hielp.
al wil ik nog wel de alternative weten op een timer, ik ben benieuwd
Je zou op Internet kunnen zoeken naar een microtimer-component. Die zijn nauwkeuriger dan de standaard-timer van Delphi.

- This line is intentionally left blank -


Verwijderd

kijk bijvoorbeeld eens in de RXLib components, daar zit volgens mij een betere timer in.

  • rik
  • Registratie: April 2000
  • Laatst online: 01-09 10:45

rik

Een timer kan je ook gemakkelijk zelf schrijven in de vorm van een functie. Deze baseer je dan op tick counts van de processor.

Ik zal vanavond een voorbeeldje posten.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:45

Creepy

Tactical Espionage Splatterer

Wat bedoel je met beter performance? Dat ze minder CPU tijd vreten?

Met die high resolutie vreten je programma's gegarandeerd MEER CPU tijd. Dat ze "sneller" draaien??? Dan wel zo'n high resolutie timer gebruiken.

De standaard Delphi timer loopt op een thread. Op het moment dat je iets in het ontimer event doet weet je alleen zeker dat de ingestelde tijd is verlopen. Deze tijd kan echter ook veel langer zijn geweest dan de ingestelde (i.v.m. multitasking).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Kool
  • Registratie: September 1999
  • Niet online
Het beste is de animaties in een Application.OnIdle event te genereren. Steeds als je applicatie niets te doen heeft kan je dan een nieuw frame tekenen. Bijkomstigheid is dan wel dat je een soort vertragings algoritme moet inbouwen om een constante en vloeiende framerate te krijgen.

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 01-09 17:40

Knutselsmurf

LED's make things better

Op donderdag 25 juli 2002 17:52 schreef Kool het volgende:
Het beste is de animaties in een Application.OnIdle event te genereren. Steeds als je applicatie niets te doen heeft kan je dan een nieuw frame tekenen. Bijkomstigheid is dan wel dat je een soort vertragings algoritme moet inbouwen om een constante en vloeiende framerate te krijgen.
Nog mooier is, om een queue van nieuwe frames te berekenen. Uiteraard met een zeker maximum. Het enige dat je getimede show-procedure dan nog hoeft te doen, is het eerste beeld in de serie naar je scherm te moven. Als er geen nieuw frame beschikbaar is, laat je het oorspronkelijke beeld staan en noteer je een dropped frame. Door op deze manier de taken te scheiden, zullen er veel minder problemen optreden, omdat je het tijdskritische en het tijdsintensieve deel van elkaar gescheiden hebt.

- This line is intentionally left blank -

Pagina: 1