Neben der Möglichkeit die LevelDaten extern zu speichern, z.b. als XML, kann man auch Flash selbst als LevelEditor benutzten. Das Level Clickt man sich dann aus fertigen Teilen zusammen, die als Symbole Importiert werden, zum Beispiel Platformen, Gegenstände zum einsammeln, Startplätze für Spielfiguren und Gegner.

Wenn diese Symbole haben dann ActionScript Klassen, die sich im Konstruktor in einer globalen Liste eintragen (Design-Pattern Singleton : _root.gPlatforms , nicht Map) :

// in Platform.as , der konstruktor der klasse Platform
public function Platform() {

   Map.RegisterPlatform(this);

   ...

}



// in Map.as , die verschiedene Funktionen enthält, die die Karte / das Level betreffen
static public function RegisterPlatform (x:MovieClip) {

   if (_root.gPlatforms == undefined) _root.gPlatforms = Array();

   _root.gPlatforms.push(x);

}

Achtung : Man darf sich nicht dadrauf verlassen, dass es eine Instanz von Map gibt, da man nicht voraussehen kann, in welcher Reihenfolge die Konstruktoren aufgerufen werden, deshalb ist die Methode RegisterPlatform statisch. Auch das Array _root.gPlatforms ist keine instanz-variable von Map, sondern etwas globales, dafür aber von überall zugreifbar.

So kriegt kann man jedenfalls auf alle Level-Elemente zugreiffen, ohne sie von Hand in irgend eine Liste eintragen zu müssen, das erledigen sie in ihrem Konstruktor ganz von alleine, und man kann die grafischen Möglichkeiten von Flash zur Hintergrundgestaltung nutzen, zumindest für nicht Interaktive Levelelemente wie Hintergrund-Grafiken, oder Animationen von Level-Deko, Ausserdem spart man sich den Entwicklungsaufwand für einen externen LevelEditor, und einem Loader für die Leveldaten.

-- RobertNoll - 08 Jun 2006
Topic revision: r1 - 08 Jun 2006, RobertNoll
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Medieninformatik-Wiki? Send feedback