Array von einem Frame zum anderen neu ordnen

Leugim

Erfahrenes Mitglied
Hi Leute!
Ausnahmsweise weiß ich mal wo das Problem liegt, allerdings nicht wie ich das lösen sollte.

Ich habe eine Reihe von mc's die von rechts nach links wandern. Damit sich der Zug wiederholt, muss der erste MC wenn er bei _x = 0 ankommt, ans ende der Reihe angefügt werden. Da sich die mistviecher auf dem Weg in grösse und rotation aber nicht der Abstand zwischen ihnen verändern sollen, orientiere ich die position des rechtsliegenden MC's je nach Breite des MC's + 10pixel Abstand.

Wenn ich nun aber den ersten MC an das Ende der Reihe packe, ziehen natürlich gleich alle anderen MC's mit..
Deswegen hatte ich die Idee, einen Array mit so vielen Einträgen anzulegen wie es MC's auf meiner Bühne gibt.

Der Array müsste dann jedesmal, wenn ein MC ans linke Ende der Bühne kommt, neugeordnet werden. Der erste Eintrag müsste dann in den letzten und der zweite eintrag müsste in der ersten.. und so weiter.

Ich dachte bisher, dass For-Schleifen in einem onEnterFrame-Event immer komplett zwischen einem und dem anderem Frame durchlaufen werde..
Dem ist aber anscheinend nicht so, wie ich überraschenderweise im debug-modus bemerkt habe. Denn dort sieht man, dass für eine kurze Zeit zwei Arrayeinträge den gleichen Wert besitzen!? :confused:

Hier mal der relevante code.. kann natürlich auch die fla anhängen wenn's lieber ist.

Der Array: "_root.arow[]"
jaja bin nicht so der namens-held :)

PHP:
onEnterFrame = function () {
if (this._x <= 0) {
			this._xscale = 100;
			this._yscale = 100;
			this._rotation *= -1;
			
			_root.arow[(_root.maax + 1)] = _root.arow[1];
			
			for (var k = 1; k <= _root.maax; k++) {
				_root.arow[k] = _root.arow[(k + 1)];
			}
			_root.arow[_root.maax] = _root.arow[(_root.maax + 1)];
			delete _root.arow[(_root.maax + 1)];
			this._x = this._parent["ccc" + _root.arow[_root.maax - 1]]._x + 10 + this._width;
			
		}
}

vielen dank!
 
Zuletzt bearbeitet:
Ich dachte bisher, dass For-Schleifen in einem onEnterFrame-Event immer komplett zwischen einem und dem anderem Frame durchlaufen werde..
Das sollte auch der Fall sein.

Ich verwende in solchen Fällen zwei Schleifen: In der ersten werden alle Clips um einen bestimmten Wert verschoben, in der zweiten dann die, die aus dem sichtbaren Bereich hinausgelaufen sind, neu links bzw. rechts angeordnet.

Such mal im Forum mit dem Begriff "putLeft" bzw. "putRight" - Du solltest mehrere Beispiele von mir finden.

Gruß
.
 
Danke für's "putRight" ! Genau das richtige. Anstatt nur beim "rightPutten" auf den Abstand zwischen den MC's zu achten, habe ich eine ständige Abfrage eingebaut, damit auch beim skalieren und drehen der MC's der Abstand gleichbleibt

Ich hänge die fla an, damit sie auch anderen helfen kann.

Danke Tobias Menzel!

p.d: For schleifen werden tatsächlich gänzlich zwischen einem und dem anderen Frame abgearbeitet... Ich hatte allerdings einen Break-Point IN die For-Schleife gepackt, wodurch sie halt immer stückchenweise vorwärtskam :-(
 

Anhänge

  • polaroidtests2.zip
    16,6 KB · Aufrufe: 11
Zurück