wieso ist das bei euch alles so schnell?
Mit dynamischen Charakter meine ich, daß ein TBitmap am Anfang klein ist. Wenn du dann was reinlädtst, verändert sich die Größe dieses Speicherbereiches, weil da ja nun nicht nur der Header und die properties drin sind, sonsdern nebenbei auch noch ein paar bunte Pixel. Dadurch verändert sich die Größe beim Laden eines Bildes: dynamisch im Sinne der Definition.
Irgendwo hier wurde schonmal beschrieben, daß der alte Speicherbereich, in den das Bitmap ohne Pixel noch reingepasst hat, nicht wieder freigegeben wird. So. Ein array ist im Speicher immer in "einem Stück". Da du aber nie alle Bilder gleichzeitig laden kannst, sondern immer nur nacheinander, würdest du erst das array für's erste Bild vegrößern (vergrößern nicht die anzahl an Elementen, aber die Größe des verbrauchten Specihers). Dann für's zweite usw. Der Speicherbereich aus dem jeweils letzten Schritt wird nie freigegeben und bleibt unbenutzt.
Lindern kann man dieses Phänomen, indem man kein array benutzt, daß an einem Stück hängen muss, sondern einzelne TBitmap-Variablen nimmt. Ist zwar wesentlich unübersichtlicher, dafür wird aber nicht so viel Speicher verpulvert, sondern eben... weniger. Aber wenn die Bilder nicht besonders groß sind, sollte eigentlich auch ein array of TBitmap noch in meine 256 MB RAM passen...
@aya: hab' ich acuh schon bemängelt ;-P
Ach ja, das ganze Problem mit der Geschwindigkeit usw kann man lösen, indem man die Bewegung Zeitabhängig berechnet. Du lässt also einen Zähler mitlaufen und weißt, nach 1 Sekunde bewegt sich so ein Schiffchen um 10 Pixel. Jedesmal, wenn dein Programm gerade Zeit hat (OnIdle), schaut es, was bewegt werden soll und schaut auf die Uhr. Wenn erst 'ne halbe Sekunde vergangen ist, bewegt man's nur um 5 Pixel. Ist die Zeitspanne so klein, daß es weniger als ein Pixel ist, versucht man auf einem Mittelwert zu bleiben (zum Beispiel merkt man sich den letzten Wert und wartet solange, bis es sich endlich mal um einen Pixel bewegen würde). Dann läuft dein spiel von der Geschwindigkeit her überall. So werden mittlerweile eigentlich alle Spiele gesteuert, weil mittlerweile auch viel mit Zeitelementen gearbeitet wird. Nachteil: auf extrem langsamen Rechnern kann's zu Rucklern kommen - Vorteil: Wenn's läuft, läuft's richtig.
_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk.
- Dilbert