createsprite und #pb_any fehler

Anfängerfragen zum Programmieren mit PureBasic.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

createsprite und #pb_any fehler

Beitrag von Brügge »

hiho!

wenn ich ein sprite erstelle und als ersten parameter #pb_any angebe,

dann bekomm ich ja die sprite nummer zurück...
wenn ich die jetzt ausgebe dann erhalte ich einen wert der über 1000000 ist.

wenn ich jetzt das sprite mit der gleichen nummer nutzen möchte
(wieder createsprite()) dann gibt der compiler mir einen fehler aus:

#sprite object number is very high (over 1000000), are You sure of that ?

hier nochmal der code:

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

  createsprite(sprite,100,100)
  closewindow(0)
endif
vielen dank!
Zuletzt geändert von Brügge am 29.07.2008 09:38, insgesamt 1-mal geändert.
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Die Nummer ist nicht "sprite" sondern "0"
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

oh sorry hab mich vertan.... bei mir steht das mit #pb_any...

ich änder das oben um
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Ne, bei pb_any bekommst du einen Speicherblock zurueck, der sich so nicht
wieder verwenden laesst. Also freigeben, und dann nochmal mit
createsprite(#pb_any neu erstellen.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

also wenn ich das so mache:

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)
  createsprite(sprite,100,100) 
  closewindow(0) 
endif 




dann funzt das auch nicht...

oder habe ich das jetzt falsch verstanden?
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

da irrst du aber edel:
Wenn #PB_Any als '#Sprite' Parameter verwendet wird, dann wird die Nummer des neuen Sprites als 'Ergebnis' zurückgegeben.
es ist also in der Tat die SpriteNummer, aber diese sollte auch nur zum weitere benutzen verwendet werde, und nicht zum erstellen einen neuen Sprites mit der gleichen Nummer, das ist "unlogisch".
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Brügge hat geschrieben:also wenn ich das so mache:

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)
  createsprite(sprite,100,100) 
  closewindow(0) 
endif 




dann funzt das auch nicht...

oder habe ich das jetzt falsch verstanden?
Beim neuen Sprite wieder:

Code: Alles auswählen

sprite = createsprite(#PB_Any,100,100)
Zuletzt geändert von Danilo am 29.07.2008 10:03, insgesamt 1-mal geändert.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

@ stargate

es ist also in der Tat die SpriteNummer, aber diese sollte auch nur zum weitere benutzen verwendet werde, und nicht zum erstellen einen neuen Sprites mit der gleichen Nummer, das ist "unlogisch".


ne ist es nicht...
ich schreibe gerade ein kleines tool, das ein sprite3d clippen soll. an sich ganz easy...

es wird ein neues sprite mit der entsprechenen größe erstellt werden, dann mit usebuffer soll das alte sprite(geclippet) draufgezeichnet werden und dann wird das sprite3d neu erstellt (mit dem neuen sprite)...

ich möchte jetzt nicht bei jedem aufruf ein neues sprite nutzen...

deshalb wird bei dem gleichen sprite3d wieder das gleiche sprite benutzt...
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Da hab ich mich wohl etwas falsch ausgedrueckt, mir ist sehr wohl bewusst
was #pb_any macht, diese "nummer" kann ich aber nicht nocheinmal bei
dem erstellen eines objektes nutzen, es wuerde zumindest ueberhaupt
keinen Sinn machen und massiv Speicher verschleudern.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

@Danilo

hi das macht keinen unterschied (dort schmiert der mir schon ab)

@edel

wieso speicher verschleudern? (ist doch ehr wehniger speicher)
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Antworten