Objektorientierte Spieleprogrammierung in Flash

Entweder müsste jedes Objekt auch einen Verweis auf den Vorgänger besitzen, oder Du erstellst eine Funktion, die die gesamte Kette durchläuft und die Referenzen aktualisiert.

Solche Listen haben durchaus ihre Vorteile bei bestimmten Anwendungen, als reiner Array-Ersatz in einer Scriptsprache halte ich sie allerdings für etwas übertrieben ...

Gruß
.
 
Da Du den Ring eh immer wieder durchläufst, kannst Du das Objekt dann löschen, wenn es an der Reihe ist in dem Du es über den Destructor zerstörst (wichtig!) und die Verweise auf dieses Objekt umbiegst.

Ich halte diese Art der Programmierung für viel eleganter als die Benutzung eines Arrays. Im Array mußt Du auf Grenzen prüfen, Du kannst nur eine vordefinierte Menge an Objekten verwalten und der Interpreter reserviert immer den gesamten Array im Speicher. Zudem kannst Du nur von der einen Grenzen zur anderen linear laufen, während ein Ringbuffer mehr als eindimensional verzweigen kann und je nach Bedarf diese Richtung durchläuft.

Man hat zwar mehr Aufwand bei der Implementation eines Rings als bei einem Array, aber dafür hat man nicht die Nachteile und Grenzen dessen.
 
<offtopic>

Natürlich hat so eine Liste ihre Vorteile - bei Anwendungen, die "nur" auf die typischen Methoden der Array-Klasse zurückgreifen, sind diese m.E. nicht relevant bzw. wiegen die Nachteile der Implementierung auf. Auch darf man eine dynamische Scriptsprache wie AS nicht mit Compilersprachen wie C vergleichen - um die Speicherverwaltung kümmert sich der Interpreter eh automatisch (in AS gibt es nicht einmal explizite Desktruktoren; Objekte werden mit delete entfernt bzw. automatisch, wenn alle Referenzen gelöscht wurden).

Ich werde bei Gelegenheit mal schauen, wie es sich mit der Geschwindigkeit verhält, wenn ich z.B. aus einem Array/Liste von MCs einen Eintrag finden entfernen will.

</offtopic>

Gruß
.
 
Ok... diese Diskussion ob nun Arrays oder dynamische Strukturen besser für ein Spiel sind, ist ja ganz schön, aber die hilft mir grade um erlich zu sein nicht besonders weiter...:rolleyes:

Was mir zur Zeit wirklich helfen würde wär ne gute Idee wie ich Daten in die Flash Datei laden kann...
Und zwar handelt es sich hier um die Standardwerte von allenmöglichen Spielobjekten (z.B. die Lebensenergie eines Gegeners, die Geschwindigkeit mit der eine Rakete fliegt.).
Am besten wär es wenn man die Werte direkt als Objekte einlesen könnte, also das Flash z.B. das Object "Gegner1" läd das dann alle zu "Gegner1" gehörenden Werte enthällt...

Zuerst wollte ich die werte mit txt-Datein und dem LoadVars-Objekt einlesen, was allerdings ziehmlich aufwändig ist. Zum einen muss ich alle Zahlen Parsen, was allein dadurch schwierig ist, das jedes Objekt unterschiedlich viele Zahlen- und String-Werte und andereseits sind Textdateien mit mehr als 5 werten nicht besonders übersichtlich...

Gibt es da irgendeine bessere Lösung?
 
Hi,

ich würde zu XML-Dateien raten. Dabei kannst Du ja per Knoten beliebige Attribute angeben:
Code:
<spriteset>
  <object strength="150" speed="2" flightset="121" src="s01.swf" amt="4" />
  <object strength="72" speed="4" flightset="18" src="s02.swf" />
  <object strength="110" speed="1" flightset="29" amt="6" />
</spriteset>
Wenn Deine Objekte unterschiedliche Attribute haben, kannst Du das "attributes"-Objekt durchlaufen und die für Dich relevanten auslesen.

Gruß
.
 
Ok... Das sieht ja schonmal nicht schlecht aus. Gibt es denn auch eine Möglichkeit die Werte aus der XML-Datei direkt als Zahl und nicht als String auszulesen? Oder muss ich alle Werte erst Parsen?
 
Hi,

mit parseInt bekommst Du aus jedem String fix eine Zahl.

Parsen übernimmt die XML-Klasse für Dich; die Werte musst Du Dir allerdings schon selbst aus den jeweiligen Knoten und Attributen holen. Such mal im Forum nach "XML" und Du findest einige Beispiele, wie man da rangeht.

Gruß
.
 

Neue Beiträge

Zurück