Typ Problem in MiniB3D

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Midimaster

Betreff: Typ Problem in MiniB3D

BeitragDo, Jan 28, 2010 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich konvertiere gerade zum ersten Mal ein B3D-Spiel in MINIB3D, um es auf dem MAC nutzen zu können.

Dabei muss ich ja allen in B3D "undefinierten" Typen jetzt in echte Typen umwandeln. Jetzt bin ich aber an einem Punkt, wo dies in B3D immer ging, aber ich nciht weiß, wie ich es in MINIB3D lösen kann:

BlitzBasic: [AUSKLAPPEN]
Note = LoadSprite("Noten.png")
Dim Noten[100]
For i=0 To 100
Noten[i]=CopyEntity(Note)
Next


Das Problem ist nun, dass ich mich ja in MINIB3D für den Type TSprite entscheiden muss, dann aber CopyEntity nicht mehr zur Verfügung steht:

BlitzMax: [AUSKLAPPEN]
Note:TSprite = LoadSprite("Noten.png")
Global Noten:TSprite[100]
For i=0 To 100
Noten[i]=CopyEntity(Note)
Next


Wie löse ich das grundsätzlich? Ich verwende ja an vielen Stellen einen "Entitiy-Befehl" für einen Sprite. Bei den Bewegungen scheint es ja keine Probleme zu geben:
BlitzMax: [AUSKLAPPEN]
PositionEntity Note,0,5,5

geht problemlos durch

Noobody

BeitragDo, Jan 28, 2010 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Schätzungsweise musst du das Ergebnis von CopyEntity, welches vom Typ TEntity ist, zurück nach TSprite casten BlitzMax: [AUSKLAPPEN]
Noten[ I ] = TSprite( CopyEntity( Note ) )
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Midimaster

BeitragDo, Jan 28, 2010 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Also damit funktioniert es jetzt.

Vielen Dank, Noobody!

"Casten"? hab ich ja noch nie davon gehört. Gibt es da weitere Informationen irgendwo?

D2006

Administrator

BeitragDo, Jan 28, 2010 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Casten nennt man einfach die explizite oder implizite Umwandlung eines Datentyps in einen anderen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Nicdel

BeitragDo, Jan 28, 2010 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Grob gesagt bedeutet es, dass ein Typ umgewandelt wird. In anderen Sprachen (z.B. C++) gibt es da noch verschiedene Varianten (static_cast,...).

Hier, Wikipedia: http://de.wikipedia.org/wiki/Typumwandlung
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Jolinah

BeitragDo, Jan 28, 2010 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst auch die CopyEntity-Methode von TSprite verwenden, dann kriegst du auch direkt wieder ein TSprite zurück:

BlitzMax: [AUSKLAPPEN]
Noten[i] = Note.CopyEntity()


Geht übrigens auch mit allen anderen Befehlen. Die Funktionen sind nur Wrapper für die eigentlichen Methoden Wink

Midimaster

BeitragDo, Jan 28, 2010 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, das ist ja dann voll OOP.

Is ja viel schöner als das Original B3D

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group