Kleines Problem mit AS2

Igma

Mitglied
Hallo.

Ich hab diesen Code für ein Spiel was ich erstellen will, von einem Tutroial kopiert, doch das Problem ist, dass das Tut für Flash 5 erstellt wurde. So sieht der Code aus:

PHP:
fscommand ( "allowscale", false );

myMap = [ [1,1,1,1,1,1,1,1],
	      [1,0,0,0,0,0,0,1],
	      [1,0,1,0,0,0,0,1],
	      [1,0,0,0,0,1,0,1],
	      [1,0,0,0,0,0,0,1],
	      [1,1,1,1,1,1,1,1] ];

var tileW = 64;
var tileH = 64;

function buildMap(map) {
	var mapWidth = map[0].length;
	var mapHeight = map.length;
	for (var i = 0; i<mapHeight; ++i) {
		for (var j = 0; j<mapWidth; ++j) {
			this.attachMovie("tile", "t_"+i+"_"+j, d++);
			this["t_"+i+"_"+j]._x = (j*tileW);
			this["t_"+i+"_"+j]._y = (i*tileH);
			this["t_"+i+"_"+j].gotoAndStop(map[i][j]+1);
		}
	}
}

buildMap (myMap);


In Action Script 2 funktioniert es leider nicht. Weiß jemand, was ich daran ändern soll?
 
Hi,

der Fehler liegt in dieser Zeile:
Code:
this.attachMovie("tile", "t_"+i+"_"+j, d++);
Du versuchst, eine Variable (d) zu inkrementieren, die nicht definiert ist - daher gibst Du keine gültigen (und vor allem unterschiedliche) Tiefenebenen für Deine Kacheln an (Flash 5 hat für undefinierte Variablen in Ausdrücken automatisch den Wert 0 angenommen).

Lösung: Deklariere die Laufvariable d vor der Schleife (am Anfang der Funktion buildMap):
Code:
var d = 0;

Gruß
.
 
Ach, so einfach hätt ichs mir jetzt auch nicht vorgestellt.:-)
Ich dachte eher, dass man die Funktion in Flash 5 anders definiert.
Ok, danke für die Hilfe.
 
Kleiner Tipp: Bei solchen Fehlern (wenns einfach mal wieder nicht laufen will), einfach mal alle beteiligten Werte (dazu gehören auch Laufvariablen) per "trace" ausgeben lassen - so stößt man in der Regel recht fix auf die Ursache des Problems. ;)

Gruß
.
 
Zurück