Array-Problem

flashsi

Erfahrenes Mitglied
Hallo Leute,

vielleicht könnte mir ja damit jemand behilflich sein.

Ich habe vier MCs auf der Bühne. Mit Instanznamen neues, musik und fotos. Und dieses Script:

Code:
var menu = ["neues","musik","fotos"];

for (var i in menu) {
	this[menu[i]].onPress = function() {
		trace (menu[i]);
	}
}

Und ich dachte, es wird mir nun immer der gedrückte MC ausgegeben. Es kommt aber immer nur (neues). Also i=0. Warum ist das so? Und wie muss ich es verändern, dass es klappt?

Beste Grüsse
 
Und wie muss ich es verändern, dass es klappt?

Beste Grüsse

PHP:
var menu = ["neues", "musik", "fotos"];
function checkMC(target_mc) {
	for (i=0; i<menu.length; i++) {
		if (target_mc) {
			trace(target_mc);
			return;
		}
		else {
			this[menu[i]].onRelease = function() {
				checkMC(this);
			};
		}
	}
}
checkMC();
 
so gehts auch
PHP:
function checkMC(target_mc) {
	for (i=0; i<menu.length; i++) {
		this[menu[i]]._idx = i;
		this[menu[i]].onRelease = function() {
			trace(menu[this._idx]);
		};
	}
}
checkMC();
 
Noch eine kleine Frage:

Warum funktioniert dann das nicht?

Code:
import mx.transitions.Tween;

var menu = ["neues","musik","fotos"];

function checkMC(target_mc) {
	for (i=0; i<menu.length; i++) {
		this[menu[i]]._idx = i;
		this[menu[i]].onPress = function() {
			var neuesTw:Tween = new Tween(menu[this._idx], "_x", mx.transitions.easing.Elastic.easeOut, -50, 25, 2, true);
		};
	}
}
checkMC();

Muss ich das - menu[this._idx] - noch irgendwie umwandeln?

Oder anders einbetten?
 
Wenn du den mc bewegen willst welchen du zuvor angeklickt hast dann reicht ein einfacher Verweis mit "this"

Code:
import mx.transitions.Tween;

var menu = ["neues","musik","fotos"];

function checkMC(target_mc) {
	for (i=0; i<menu.length; i++) {
		this[menu[i]]._idx = i;
		this[menu[i]].onPress = function() {
			var neuesTw:Tween = new Tween(this, "_x", mx.transitions.easing.Elastic.easeOut, -50, 25, 2, true);
		};
	}
}
checkMC();

Ansonsten gehts auch komplizierter indem du zB erst auf die Bühne verweist und darüber dann den mc ansprichst wenn dein Skript auf der Hauptzeitleist liegt:

Code:
import mx.transitions.Tween;
var ref:MovieClip = this;
var menu = ["neues", "musik", "fotos"];
function checkMC(target_mc) {
	for (i=0; i<menu.length; i++) {
		this[menu[i]]._idx = i;
		this[menu[i]].onPress = function() {
			var neuesTw:Tween = new Tween(ref[menu[this._idx]], "_x", mx.transitions.easing.Elastic.easeOut, -50, 25, 2, true);
		};
	}
}
checkMC();

Sollte so gehen
 
Das klappt perfekt. Vielen Dank für die schnelle Hilfe. Manchmal sieht man den Wald vor lauter Bäumen nicht!
 
Zurück