Array von Types?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Rafi

Betreff: Array von Types?

BeitragDo, Jan 04, 2007 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich hab heute den ganzen Tag überlegt wie ich es machen kann. Ich habe ca. 800 Tiles und möchte die für einen Editor verwenden. Bisher habe ich diese in einem TImage-Array gespeichert, allerdings möchte ich mehr Informationen dazu haben, z.b. ob es eine Animation ist, aus wievielen Bilder sie besteht, wo sie gemalt werden soll. Natürlich würde ich am auch die weiteren Bilder einer Animation gerne in dem Type speichern.

das funkt nicht:

Global Tilearray:TTiletype[800]

Type TTiletype
field x:int, y:int
field anzahlframes:int
field image:TImage[anzahlframes]
'etc...
End Type

Wie macht man es am besten?
 

Dreamora

BeitragDo, Jan 04, 2007 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

SuperStrict ' Muss zu oberst stehen
Type TTile
 ...
End Type
const numTiles:int = 800
global Tiles:TTile[numTiles]
for local i:int = 0 to numTiles-1
  Tiles[i] = new TTile
next


Array erzeugen erzeugt keine Objekte im Array, es reserviert nur den Speicher für die Type Referenzen.

Falls du neu sein solltest, so ist der Sticky Thread ganz oben in diesem Board sowie "FAQ & Tutorials" hier in der Blitz Max Kategorie sehr ans Herz zu legen, denn BM verhält sich elementar anders als die alten Blitz, es nutz von daher nur bedingt, wenn du da drin Erfahrung hast (C# und Java bringen dir mehr).
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Do, Jan 04, 2007 22:23, insgesamt einmal bearbeitet

Artemis

BeitragDo, Jan 04, 2007 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, man kann Arrays auch von Objekten erzeugen.

Bei dir wird wohl irgendwo anders ein Fehler sein.

Wenn es eine konstante Anzahl an Tiles ist, ist ein Array ok, bei einer Variablen (während der Laufzeit) wäre eher eine TList zu empfehlen.
 

Rafi

BeitragSa, Jan 27, 2007 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Antworten! Ich hab das schon versucht und jetzt erstmal bei Seite gelegt, weil es nicht funktioniert.

FOODy

BeitragSa, Jan 27, 2007 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Is doch logo warum das net geht.
anzahlimages ist von anfang an auf 0.
Also erstellt du ein Array mit einer Größe von 0.

Dafür musst du das Array nachher Resizen. (array = array[..NEUE_GRÖSSE])
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

AraneA

BeitragMi, Feb 21, 2007 3:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht das nicht über:
Code: [AUSKLAPPEN]
Type TTile
  Field frame:int

  Method Set( f )
    frame = f
  End Method
End Type

Global map:TTile[ 0, 0 ]

Function CreateMap()
  map = New TTile[ 100, 100 ]
 
  For x = 0 to 99
    For y = 0 to 99
      map[ x, y ] = New TTile
      map[ x, y ] = TTile.Set( irgendein Frame )
    Next
  Next
End Function



Da werden dann zwar einmal umsonst n paar Instanzen erstellt, aber da ja nix auf die zeigt werden die doch eh wieder gelöscht... Und beim Map-Neu-laden kommt es doch nicht unbedingt drauf an oder?
Oder mach ich da nen Denkfehler?

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group