Seite 2 von 3
Verfasst: 29.07.2008 10:08
von STARGÅTE
Verfasst: 29.07.2008 10:13
von Danilo
Brügge hat geschrieben:hi das macht keinen unterschied (dort schmiert der mir schon ab)
Sicher, wenn Du beim 2.mal wieder #PB_Any verwendest?
Code: Alles auswählen
initsprite()
if openwindow(0,0,0,300,300,"test")
openwindowedscreen(windowid(0),0,0,300,300,1,0,0)
sprite = createsprite(#pb_any,64,64)
debug sprite
freesprite(sprite)
sprite = createsprite(#pb_any,100,100)
closewindow(0)
endif
Hatt vorhin kurz nen Fehler drin, mußt natürlich #PB_Any übergeben anstatt sprite.
Verfasst: 29.07.2008 10:16
von edel
Benutzt du feste Werte (0...), wird intern ein Array alloziert. Nimmst du jetzt
einen sehr hohen Wert z.B. einen Pointer mit einem Wert von 457239,
werden 457238*structurgroesse Bytes verbraucht, was glaube ich nicht in
deinem Sinne ist. Deswegen fragt der Debugger da auch nochmal nach.
Viele machen z.B. auch den Fehler und fangen mit 1 an, ein Array faengt
aber bei 0 an.
Verfasst: 29.07.2008 10:17
von STARGÅTE
er will aber, dass das 2. Sprite die Nummer des ersten hat.
Was aber keinen Sinn macht, denn wenn er dem 1. eine zufälligen NUmmer erteilt welche dann auch das 2. hat, kann er auch gleich dem 2. eine zufällige geben, da es ihm ja eh egal ist, welche nummer es hat, und vom ersten den Speicher frei geben.
Verfasst: 29.07.2008 10:19
von Brügge
@danilo
hi das kann ich nicht machen.... dann bekomm ich unendlich viele sprites...
@edel
das hab ich jetzt nicht verstanden...
@all
ich glaube ich mach das so: ich nehme einen festen wert (z.B. 22000) und zähle dort pro sprite3d 1 hoch. da 22000 kleiner als 1000000 ist, wird der mir doch keinen fehler mehr ausgeben oder?
Verfasst: 29.07.2008 10:21
von edel
Ok, mal mit einfachen Worten, wenn du als Wert 22000 nimmst, hast du
auch 22000 Sprites erstellt.
Verfasst: 29.07.2008 10:23
von Danilo
Brügge hat geschrieben:@danilo
hi das kann ich nicht machen.... dann bekomm ich unendlich viele sprites...
Das Alte wurde doch vorher freigegeben?
Verfasst: 29.07.2008 10:23
von STARGÅTE
edel meint damit das es dann ein Array erstellt wurde (welches die SpeicherIDs der Sprite hat) welche dann 22000 Felder hat.
@Brügge nein nicht unendlich viele, sondern immer nur 1! da er ja alle älteren immer wieder frei gibt (den Speicher)
Verfasst: 29.07.2008 10:28
von Brügge
ahhh!!! ich habs gecheckt!!!
vielen dank!!!
ihr seid soooo gut!!!!!
Verfasst: 29.07.2008 10:29
von Xaby
@Brügge
Ich hatte die gleiche Idee, aber du kommst nicht drum herum,
dir eine Struktur anzulegen.
Du kannst zum Beispiel eine LinkedList() erstellen und dort
Dann pro Element Speichern: Sprite2DID und Sprite3DID
Die beiden IDs lässt du dir zufällig generieren.
Sie bleiben aber durch deine Struktur verknüpft.
Ist speichersparender und du bist flexibler, auch wenn es im ersten Augenblick etwas komplizierter aussieht.
