Autor Beitrag
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Mo 08.03.04 17:26 
Hi,

Ich arbeite grade an einem Moorhuhn-Jagd remake. Um die animierten Images (gif's) zu bewegen benutze ich Timer. Der Hintergrund liegt in einer Scrollbar. Das Problem: Mein Rechner hat 1000 Mhz und 256 mbram, und denoch arbeitet die ganze Units hammermäßig langsam. Beispiel: Ein Objekt soll pro Timerintervall 1 sich bewegen. In der Realität bewegt es sich nichtmal jede Sekunde. Noch was: Wenn ich durch den Hintergrund scrolle bleiben alle anderen Timer stehen. Was mach ich falsch?? In der ganzen Unit sind momentan grademal 6 Timer die arbeiten! Das werden noch deutlich mehr! Wenn ich eine Animation starten möchte hängt sich das Programm sogar auf! Gibt es denn keine andere Möglichkeit Objekte anders zu bewegen :(

Bitte helft mir, ich weiß schon wieder nicht weiter. Ich glaub schon wieder ein gestorbenes Projekt :(
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Mo 08.03.04 18:33 
Erstens mal ... so wie du das ganze realisierst, vergiß es.

Timer sind die schlechteste Möglichkeit, sie arbeiten meines Wissens mit WM_TIMER. Und die Nachrichten werden nun mal nicht abgearbeitet, wenn du mit rechenintensiven Dingen die ganze Prozessorzeit stiehlst.

Animation mit einer Scrollbar ... ähm ... naja ... ich weiß ja nicht wie du es realisiert hast, aber bis auf einen extrem aufwändigen, komplexen Weg fallen mir da nur schlechte, langsame Alorithmen ein - die nochdazu extrem unflexibel sind.

Ich will ja nix sagen, aber ich denke, du solltest nochmals bei Null beginnen - vielleicht anhand eines Tutorials; davon gibts genug im Netz !

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 08.03.04 18:40 
Also erstmal ist es immer hammermäßig langsam, Images zu bewegen... such einfach mal hier im Forum.
Was schneller ist, aber immernoch nicht zu kompliziert, wäre ein großes Image zu nehmen, dieses für jedes neue Bild zu löschen und alle Elemente neu per Canvas an ihre aktuelle Position zu zeichnen (alle zusammen, damit nur einmal gezeichnet werden muss!!).

Viele Timer in einem Programm sind möglich aber nicht sehr professionell.
Mach lieber eine globale Endlosschleife indem du einen regelmäßigen Timer verwendest und in dem dynamisch alles bearbeitest, was dran ist.
Noch professioneller wäre es, das OnIdle-Ereignis der Application mit einer passenden Prozedur zu belegen, dann festzustellen, wie viel Zeit zwischen zwi Frames vergangen ist und alle Objekte passend zu ihrer Geschwindigkeit zu bewegen.

Dein Problem mit dem Scrollen würde das wahrscheinlich beides aber auch nicht lösen, da müsstest du das Scrollen schon selber in deiner Schleife erledigen. Liegt wohl daran, dass dein Programm während dem Scrollen keine neuen Messages abfragt.
Karlson Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 09.03.04 14:23 
Von vorne anfangen geht schwer, ich bin schließlich noch ganz vorne :rolleyes: Eigentlich muss ich nur den Speicherfressenden Prozess finden, aber welcher wird das sein?

Ihr habt allerdings beide recht. Ich werde jetzt mithilfe eines Tutorials Delphi X lernen. Da sollte etwas mehr mit möglich sein.

Danke für eure ehrlichen Antworten.
ty