Seite 1 von 2

Immer freesprite() vor loadsprite() ?

Verfasst: 11.08.2007 19:15
von Sebastian
Hallo!

Wenn ich eine Grafik genau indiziert lade, also z.B. loadsprite(1,"C:\grafik.bmp") und nun etwas damit anstelle und daraufhin den Befehl wiederhole, also nochmals loadsprite(1,"C:\grafik2.bmp), geht dann doppelter Speicher verloren oder wird die erste Grafik im Speicher einfach überschrieben?

Vielen Dank für Eure Hilfe

Verfasst: 11.08.2007 19:18
von X0r
Probiers doch einfach aus.

Tipp:
Wenn du
a$="Hello world!"
a$="Hello!"

schreibst ist anschließend a$="Hello!" .

Verfasst: 11.08.2007 19:21
von ts-soft
Sobald ein PBIdentifier, also in diesem Falle die 1, erneut benutzt wird, wird
der alte entfernt und freigegeben. Free...(PBID) sind also nicht erforderlich,
erhöhen aber die Lesbarkeit

PS: Mit strings hat das ganze aber nicht viel zu tun :mrgreen:

Verfasst: 11.08.2007 19:23
von Sebastian
Danke für Deine Antwort. Das ist mir natürlich klar. Ich weiß auch, dass ich auf die erst Grafik keinen Zugriff mehr habe, aber ich verstehe nicht, was PB intern mit den Speicherstellen macht. Bleibt die erste Grafik noch im Video-Ram oder wird der Speicher wie bei freesprite() freigegeben?

Verfasst: 11.08.2007 19:25
von Sebastian
Klasse! Jetzt bin ich sehr beruhigt!
Vielen Dank!

Verfasst: 11.08.2007 20:27
von Kaeru Gaman
es ist aber allgemein davon abzuraten, einen solchen (un)stil zu pflegen...
wenn du sprite-nummern erneut vergeben willst, cleare vorher die vorherigen.

das szenario, bei dem das praktisch sein könnte,
wäre z.b. ein menu, für des du soviel grafix einlädst,
dass die graka an die obergrenze kommt.

bevor du dann den nächsten level lädst, wäre es natürlich praktisch,
alle bisherigen zu entladen, und danach die level-grafix neu einzuladen.

für so etwas mach dir eine LL, wo du die aktuellen sprites "mitschreibst" beim laden,
damit du auch wirklich die richtigen rauswerfen kannst beim nächsten laden.

wenn es nicht um so etwas geht, ist dein anfragen eher sinnfrei....

Verfasst: 12.08.2007 11:04
von Sebastian
Nein. Darum geht es nicht. Es wird eine Grafik dargestellt, die von einem externen Programm verändert werden kann. Um die Veränderung zu zeigen, wird die Grafik ständig erneut geladen.

Verfasst: 12.08.2007 11:43
von Kaeru Gaman
messages...

womit wird das bild verändert?

das verändernde proggi soll ne message schicken, wenn das bild gespeichert wurde.

das anzeige-programm lädt nur dann neu, wenn es diese message bekommt.

Verfasst: 12.08.2007 18:12
von Sebastian
ich weiß aber nicht welches Programm die Grafik verändert. Es könnte sich um Gimp, Paint oder sonstwas handeln. Kann man den Speicherprozess irgendwie abfangen?

Verfasst: 12.08.2007 18:21
von Kaeru Gaman
hm...
dann check doch per GetFileDate(), wenn es geändert wurde.
alle 5 sec. checken sollte ausreichen.

allerdings ist mir immer noch nicht ganz klar, wozu das gut sein soll.