hmmm, also ich hab jetzt einfach mal auf *meine weise* angefangen
ich würds gern erstmal ohne irgendwelche header/libs/sonstwas machen, sondern nur mit den delphi eigenen, bescheidenen mitteln
ich hab jetz folgendes angestellt:
- die spielfigur ist ein simlpes (transparentes) TImage, das ich durch ändern von Left über die Form bewegen kann. das Picture wird ab und zu ausgetauscht, wenn sie sich dreht und so...
- die "spielfigur" kann bomben abwerfen, die ebenfalls TImages sind und durch einen eigenen TTimer ebenfalls über Top auf dem bildschirm nach unten bewegt werden und irgendwann dann explodieren..
das funktioniert bisher auch prima, ohne flackern oder so (hab Form1.DoubleBuffered auf True gesetzt)
ABER: sobald ich für die szene ein hintergrundbild in form eines weiteren, großen TImages (640x480) auf die form hau, wird das ganze teilweise arg langsam... es läuft bei mir zwar noch gut, aber die CPUlast steigt von 0% ohne hintergrundbild auf gut 80-99% wenn ich die spielfigur beweg und gleichzeitig noch eine bombe abwerfe mit hintergrundbild, und ich könnte mir vorstelln, dass das auf langsameren rechnern dann nicht mehr gescheit läuft
ich benutze übrigens kein ApplicationEvents.OnIdle, da ich die TImages ja nicht ständig neuzeichne in dem sinne, sondern nur ihre position verändere... und das geschieht ja nicht immer, sodass die CPUlast wenn nichts passiert auch auf 0 bleibt
also meine fragen: a) was gäbe es an diese methode zu bemängeln und b) wie mach ich es dass das ganze mit hintergrund bild nicht so derb langsam wird?
ich hab gelesen, wenn nur das neugezeichnet wird, was sich auch wirklich verändert hat, bekommt man logischerweise nen geschwindigkeitsboost, aber in meinem fall wird doch sowieso nicht ständig ALLES neugezeichnet, da das was sich verändert ja sowieso nur kleine TImages AUF einem großen sind... oder lieg ich da in meiner denkweise falsch?
und c) ist ein Timer mit einem festen Intervall nicht besser als dieses ApplicationEvents.OnIdle? ich mein, beim timer sollte das spiel dann doch wenigstens immer gleich schnell laufen... mit dem onidle läuft das spielgeschehen doch dann viel langsamer ab wenn die CPU mal nicht nachkommt... und diese geschwindkeitsschwankungen empfind ich als störend...
ich mein, in modernen spielen ist es doch im normalfall auch so dass das spiel selbst immer gleichschnell läuft, unabhängig von den FramesPerSecond die gerendert werden... aber mit OnIdle ist das irgendwie nicht gewährleistet
