AttachMovie. Wie werde ich sie wieder los?

TreX2006

Grünschnabel
Servus

Meine Frage mag jetzt ein bischen aus dem bereich kommen, aber ich bin hier echt am Verzweifeln^^.

Ich hab um etwas Actionscript zu lernen ein kleines Spiel programmiert. Dabei hab ich ein Spielfeld aus Movieclips generiert.
PHP:
function buildMap(map) {
	
	attachMovie("empty","tiles", -10);
	game.clip = _root.tiles;
	for (var i = 0; i<5; ++i) {
		for (var j = 0; j<8; ++j) {
			var name = "ring_"+i+"zelle_"+j;
			game[name] = new game["Tile"+map[i][j]]();
			game.clip.attachMovie("r"+i, name, i*100+j*2);
			game.clip[name]._x = (200);
			game.clip[name]._y = (200);
			game.clip[name]._rotation += j*45;
			game.clip[name].gotoAndStop(_root.game[name].frame);
		}
	}
Ungefähr so.

Jetzt möchte ich um die Scoreliste anzuzeigen alle Clips entfernen. Einzeln klappt es ja auch. Nämlich so.
PHP:
_level0.tiles.ring_1zelle_1.removeMovieClip();
Da ich das aber nicht mit jedem einzelnen feld machen möchte wollte ich es mit einer Vorschleife realisieren.
PHP:
for (var i = 0; i<5; ++i) {
		for (var j = 0; j<8; ++j) {
"_level0.tiles.ring_"+i+"zelle_"+j.removeMovieClip();
}
}

Dabei tut sich leider nichts... und ich weiß nicht warum.

Könnt ihr mir da bitte weiterhelfen? Oder vielleicht sagen, besser noch erklären wie ich die Tiefe eines Movieclips der bereits von Anfang an exestiert auf +10000 verstelle. Ein Code Beispiel währ nicht schlecht.

Fals ihr wissen wollt wie das ganze aussieht http://patchworx.pa.funpic.de/games/heartbreaker.html
Ist noch nicht fertig und verbugt auch(merkwürdig, die bugs hab ich doch schon entfernt), aber für einen kleinen Überblick sollte es reichen.

MfG TreX
 
Zuletzt bearbeitet:
So testen, ansonsten mal die fla posten
PHP:
for (var i = 0; i<5; ++i) { 
        for (var j = 0; j<8; ++j) { 
_level0.tiles["ring_"+i+"zelle_"+j].removeMovieClip(); 
} 
}
 
Zuletzt bearbeitet:
Danke euch für die schnelle Antwort.
Die erste Version funktioniert bei mir auf jeden Fall. Ach es muß toll sein zu wissen was man tut^^.

PS: Könnt ihr mir ein Gutes AS Buch empfehlen, wo man besonders auf solche tilebasierenden Spiele eingeht? Ich hab es satt nur von Flashhilfe zu leben^^.

Ansonsten ist mein Problem hiermit erledigt.
Danke.
 
Hi,

mit Buchtipps kann ich leider nicht dienen. Ein paar Tipps für Tiles gibt von mir dennoch:
  • Vermeide möglichst _level0 und Stufenoperationen wie loadMovieNum. Arbeite am besten mit relativen Pfaden, notfalls mit _root.

  • Verwende die attachMovie-Methode des MovieClip-Objekts - dann hast Du über die Rückgabe direkten Zugriff auf die erzeugte Instanz:
Code:
for (var x=0; x<cols; x++) {
  for (var y=0; y<rows; y++) {
    var obj = this.attachMovie("tile", "tile_" + x + "_" + y, this.getNextHighestDepth());
    obj._x = x * obj._width;
    obj._y = y * obj._height;
  }
}
  • Es bietet sich auch an, Tiles in einem zweidimensionalen Array zu speichern:
Code:
var tile = new Array();

for (var x=0; x<cols; x++) {
  tile[x] = new Array();
  for (var y=0; y<rows; y++) {
    tile[x][y] = this.attachMovie("tile", "tile_" + x + "_" + y, this.getNextHighestDepth());
  }
}
Dann hast Du über die Koordinaten direkten Zugriff auf die einzelnen Tiles, ohne den Array-Zugriffsoperator für Objektbezeichner (mein erstes Posting) verwenden zu müssen:
Code:
tile[4][2].machWas();


  • Die for..in-Schleife kann praktisch sein, wenn Du keinen numerischen Index brauchst (z.B. beim löschen aller Tiles):
Code:
for (var x in tiles) {
  for (var y in tiles[x]);
    tiles[x][y].removeMovieClip();
  }
}

Gruß

P.S. @umlart: Deine Variante wäre korrekt, wenn es sich bei ["ring_"+i] und ["zelle_"+j] um zwei getrennte Instanzen handelte - hier scheint es ein Objekt zu sein, welches so benannt ist: ring_4zelle5
.
 

Neue Beiträge

Zurück