Scrolling Problem ( removeChild & addChild Problem )

Protip

Grünschnabel
Ich sitz gerade an nem kleinen Spiel das ich in AS3 + Flash programmiere.
Bin gerade dabei Scrolling einzubauen und sitz gerade an ein paar Problemen.
Liegt wohl vorallem an meiner fehlenden Erfahrung. Die angezeigte Welt ist eine
Tile-Welt, besteht also immer aus gleichgroßen Quadraten. Diese sind in einem
Array gespeichert. Ich habe 2 Sichtpositionsvariablen, damit ich weiss wo der
Benutzer gerade hinschauen möchte, diese werden erhöht , verkleinert sobal der
Benutzer mit der Maus in eine Ecke fährt, dies funktioniert auch recht gut.
Nun habe ich aber ein Problem beim löschen und hinzufügen der Tiles im Sichtbereich.

Code:
// Map in einem Array
var meinArray:Array = new Array();
// Schleife zum Erstellen meiner MC's für die Karte
for (var i = 0; i < 14; i++) {
	meinArray[i] = new Array();

	for (var j = 0; j < 9; j++) {
		meinArray[i][j] = new Tile();
		addChild(meinArray[i][j]);

		meinArray[i][j].x=i*50;
		meinArray[i][j].y=j*50;

		meinArray[i][j].occupie(true);
	}
}
Hier erstelle ich das erste mal das Array und zeichne es auf die Bühne


Code:
// Bildschirmzeichnen
function doScrolling():void {
	// Errechnen wo die Sichtposition gerade ist
	var tmp_x:Number=Math.floor(pos_x);
	var tmp_y:Number=Math.floor(pos_y);

	// Alle tiles von der Bildfläche löschen
	for (var n = 0; n < map_h; n++) {

		for (var m = 0; m < map_w; m++) {
			if(meinArray[n][m].parent) {
				removeChild(meinArray[n][m]);
			}
		}
	}

	// Alle tiles an der richtigen Stelle anzeigen
	for (var i = 0; i < 14; i++) {

		for (var j = 0; j < 9; j++) {
			stage.addChild(meinArray[i+tmp_x][j+tmp_y]);

			meinArray[i+tmp_x][j+tmp_y].x=(i*50)-((pos_x-tmp_x)*50);
			meinArray[i+tmp_x][j+tmp_y].y=(j*50)-((pos_y-tmp_y)*50);

		}
	}


}

Nun versuche ich hier, alle Tiles die schon auf der Bühne sind zu löschen ( removeChild )
und sie dann wieder, an der richtigen Stelle und vorallem die richtigen Tiles auf die Bühne
zu zeichnen.

Fehlermeldung :
Code:
TypeError: Error #1010: Ein Begriff ist nicht definiert und hat keine Eigenschaften.
	at main_fla::MainTimeline/doScrolling()
	at main_fla::MainTimeline/Scrolling()

Scrolling ist einfach eine Funktion die doScrolling aufruft!

Hoffe ihr könnt mir helfen! :)
 
Was ich nicht wirklich versteh ist, warum die die Tiles immer von der stage löschst und dann wieder drauf machst. Du könntest diese doch auch dann direkt verschieben.
 

Neue Beiträge

Zurück