variable in for schleife

1manni1

Erfahrenes Mitglied
Mein problem ist, das wenn ich auf einen meiner button klicke eine preloader geladen wird, der dann dort wissen muss welche der buttons gedrückt wurde. Damit dieser dann die richtige richtige Datei wieder laden kann.

jetzt hab ich nun aber dieses Problem das das irgendwie net bei mir geht da die variable die ich über gebe nur in der for schleife geht.

Code:
import mx.transitions.Tween;
var tl:MovieClip = this;
_global.currentButton = null;
var buttonNamen:Array = ["Home", "News", "Member", "Squads", "Clanwars" ];
for (var i = 1; i<=5; i++) {
	this["button" + i + "_text_mc"].caption.text = buttonNamen[i - 1];
	this["button"+i+"_mc"].id = i;
	this["button"+i+"_mc"].onRollOver = function() {
		if (_global.currentButton !== this) {
			this.button_hover_tween.stop();
			this.button_hover_bg_tween.stop();
			this.button_text_tween.stop();
			this.button_hover_tween = new Tween(tl["button"+this.id+"_hover_mc"], "_y", easeNone, tl["button"+this.id+"_hover_mc"]._y, 43, 5, false);
			this.button_hover_tween = new Tween(tl["button"+this.id+"_hover_bg_mc"], "_xscale", easeNone, tl["button"+this.id+"_hover_bg_mc"]._y, 150, 10, false);
			this.button_text_tween = new Tween(tl["button"+this.id+"_text_mc"], "_y", mx.transitions.easing.Back.easeOut, tl["button"+this.id+"_text_mc"]._y, 72, 15, false);
		}
	};
	this["button"+i+"_mc"].onRollOut = function() {
		if (_global.currentButton !== this) {
			this.button_hover_tween.stop();
			this.button_text_tween.stop();
			this.button_hover_tween = new Tween(tl["button"+this.id+"_hover_mc"], "_y", easeNone, tl["button"+this.id+"_hover_mc"]._y, 0, 10, false);
			this.button_hover_tween = new Tween(tl["button"+this.id+"_hover_bg_mc"], "_xscale", easeNone, tl["button"+this.id+"_hover_bg_mc"]._y, 43, 5, false);
			this.button_text_tween = new Tween(tl["button"+this.id+"_text_mc"], "_y", easeNone, tl["button"+this.id+"_text_mc"]._y, 0, 10, false);
		}
	};
	this["button"+i+"_mc"].onRelease = function() {
			_root.navi_mc.content_mc.loadMovie("preloadercontent.swf", 1);
			var buttonakt = this;
			trace(buttonakt);
		if (_global.currentButton !== this) {
			var old:MovieClip = _global.currentButton;
			
			_global.currentButton = this;
			old.onRollOut();
		}
	};
}

Nun eine frage würde es vllt auch irgend wie einfacher gehen, das es zB bei jedem bottun einfach einen container läd und dann dort mit attach wenn das geht den preloader, der dann die richtige datei läd. Denn sonst muss habe ich so viele swf's.
Ich habe das schon ein mal versucht aber bei mir läd er dann nichts in den container.
 
ohh jo sorry hatte ich ganz vergessen

var buttonakt = this;
trace(buttonakt);

Dies habe ich im preloadercontent stehen:

trace(_level0.navi_mc.buttonakt);

und dann komm undefined
 
Hi,

diese Variable ist nicht unbedingt nur in der Schleife bekannt, sondern vielmehr ein lokaler Member der betreffenden onRelease -Methode.

Lege diese Variable doch einfach als Variable der Zeitleiste an:
Code:
tl.buttonakt = this;

Gruß
.
 
Also du meinst so

Code:
	this["button"+i+"_mc"].onRelease = function() {
			_root.navi_mc.content_mc.loadMovie("preloadercontent.swf", 1);
			tl.buttonakt = this;
		if (_global.currentButton !== this) {
			var old:MovieClip = _global.currentButton;
			_global.currentButton = this;
			old.onRollOut();
		}
	};

oder wie
denn so geht es auch nicht. Das kappier ich nicht so wirklich
 
Handelt es sich bei _level0.navi_mc um den MC, auf dem Du den geposteten Code notiert hast ("tl")?

Andernfalls müsste ich Deine komplette Quelldatei sehen.

Gruß
.
 
navi_mc ist ein movieclip auf der zeitleiste von root und der actionscript code ist auf im 1.frame von navi_mc
 
Wenn Du buttonakt auf diesem MC definierst, sollte
Code:
trace(_level0.navi_mc.buttonakt);
diese Variable auch ausgeben.

Wenn es dennoch nicht geht, muss ich wie gesagt Deine Quelldatei sehen, um dem Fehler auf den Grund zu gehen.

Gruß
.
 
ach jetzt weiß ich den fehler ich habe vergessen die swf zu erneuern habe es immer in der fla geändert aber es ging nie

thx nochmal

aber ich habe nun das in der anderen swf:

var button1 = "_level0.navi_mc.button1_mc";

if(button1 == _level0.navi_mc.buttonakt){
trace("hallo");
}

habe beides ausgeben lassen und es kommt immer _level0.navi_mc.button1_mc raus.
Aber warum gibt er mir dann kein hallo aus?
kann das irgendwie an den variablentypen hengen?
 
Zuletzt bearbeitet:
Hi,

weil Du damit:
Code:
var button1 = "_level0.navi_mc.button1_mc";
der Variable "button1" den String "_level0.navi_mc.button1_mc" zuweist und keine Objektreferenz. Lass die Anführungszeichen weg.

Gruß
.
 
Zurück