XML menü verschiebt sich nicht

1manni1

Erfahrenes Mitglied
Nun ich denke es ist irgendwo ein simbler Fehler drin den ich nicht finde.
Also ich habe ein XMLfile das ich auslesen lasse was auch klappt.
Nun lese ich den Text ja in ein array ein und von dort dann in ein Textfeld in einem Movieclip.

Jetzt will ich aber das die Movieclips untereinander erscheinen. Allerdings wird immer nur der letzte geladen
woran könnte dies liegem

PHP:
var XMLdaten = new XML(); 
XMLdaten.ignoreWhite=true; 
XMLdaten.load("navi.xml"); 
XMLdaten.onLoad = function(success) { 
    if(success){
        anzahl = XMLdaten.firstChild.childNodes.length;
        buttonnumber = [];
		buttonname = [];
		buttontarget = [];
        for (var i=0; i<anzahl; i++) { 
            buttonnumber[i] = XMLdaten.firstChild.childNodes[i].attributes.number;
			buttonname[i] = XMLdaten.firstChild.childNodes[i].attributes.name;
			buttontarget[i] = XMLdaten.firstChild.childNodes[i].attributes.target;
			_root.navi_mc.attachMovie("button_mc", "button"+i+"_mc", 1);
			_root.navi_mc["button"+i+"_mc"].height = i*10;
			_root.navi_mc["button"+i+"_mc"].btnname.text = buttonname[i];
        } 
    }
}
 
Wo definierst du die _y-Position? Wenn nicht angegeben, legen sich alle übereinander und du siehst nur den letzten.
_height (mit Unterstrich davor) ist btw die Höhe des Movieclips, nicht seine Position.

Und für die Tiefe bei attachMovie dann auch i nehmen und nicht l. l bleibt ja immer gleich und so würde der nächste den vorigen ersetzen, da die gleiche Tiefenebene, was ebenfalls zur Folge hätte, dass nur der letzte da ist.

Gruß
Rena
 
Zuletzt bearbeitet:
Ok vielen Dank das hat nun geklappt.
Ich habe nun mein script nach _root versetzt und eben einen container namens navi_mc erstellt.
Nun ist mein weiteres Problem folgendes.

PHP:
var XMLdaten = new XML(); 
XMLdaten.ignoreWhite=true; 
XMLdaten.load("navi.xml"); 
XMLdaten.onLoad = function(success) { 
    if(success){
        anzahl = XMLdaten.firstChild.childNodes.length;
        buttonnumber = [];
		buttonname = [];
		buttontarget = [];
        for (var i=0; i<anzahl; i++) { 
            buttonnumber[i] = XMLdaten.firstChild.childNodes[i].attributes.number;
			buttonname[i] = XMLdaten.firstChild.childNodes[i].attributes.name;
			buttontarget[i] = XMLdaten.firstChild.childNodes[i].attributes.target;
			navi_mc.attachMovie("button_mc", "button"+i+"_mc", i);
			navi_mc["button"+i+"_mc"]._y = i*18;
			navi_mc["button"+i+"_mc"].button_txt_mc.btnname.text = buttonname[i];
			
			navi_mc["button"+i+"_mc"].button_btn.onRollOver = function (){
				navi_mc["button"+i+"_mc"].gotoAndPlay(over);
			}
		}
    }
}

So nun ist allerdings immer in der function navi_mc["button"+i+"_mc"] undefined wenn man es dort abfrägt. woran könnte dies liegen.

Und noch eine kleinere Frage. Ich will die ein bischen dynamisch machen.. daher auch bei der gotoAndPlay Funktion ein Bildname. Allerdings habe ich in dem MC mehrere Ebenen. Macht dies was aus? Denn wenn ich mal probehaft einfach anstatt navi_mc["button"+i+"_mc"] navi_mc["button2_mc"] eingebe, passiert nichts.
 
Hi,
mit navi_mc["button"+i+"_mc"].gotoAndPlay sprichst du einen weiteren Movieclip namens navi_mc["button"+i+"_mc"] an, der eben in jenem ursrpünglichen navi_mc["button"+i+"_mc"] liegen soll. Den gibt es aber nicht sondern du willst ja die Zeitleiste dieses ursprünglichen steuern.
So müßte es klappen
PHP:
navi_mc["button"+i+"_mc"].button_btn.onRollOver = function (){
		this.gotoAndPlay("over"); 
		//es sei denn, over wäre eine Variable, 
		//dann ohne "" aber mit Pfad zu derselben
}
... daher auch bei der gotoAndPlay Funktion ein Bildname. Allerdings habe ich in dem MC mehrere Ebenen. Macht dies was aus?
Nö. Dass nichts passiert ist, dürfte an o.g. liegen.

Gruß
Rena
 
Zuletzt bearbeitet:
ahh ok stimmt die "" haben gefehlt thx dafür.
Allerdings das andere geht noch nicht. Denn dis this ist in dem fall ja navi_mc["button"+i+"_mc"].button_btn also zum beispiel
navi_mc.button2_mc.button_btn aber ich muss ja auf die timeline von navi_mc.button2_mc kommen. aber wie schaff ich das nun :(^^
 
Ach so ... den button_btn hab ich übersehen, ist auch ein Movieclip, nehm ich an. Dann
PHP:
this._parent.gotoAndPlay("over");
Gruß
Rena
 
sry aber ich weiß schon wieder nicht weiter.

Also meine buttons bestehen einfach aus dem textfeld das sich ein bisschen verschieben soll wenn man darauf geht.

jetzt hab ich bis jetzt 30 frames 15 für den hinweg und 15 zurück.

Nun hab ich auch diese code
PHP:
			navi_mc["button"+i+"_mc"].button_btn.onRollOver = function (){	
				this._parent.gotoAndPlay("over");
			}
			
			navi_mc["button"+i+"_mc"].button_btn.onRollOut = function (){
				this._parent.gotoAndPlay("out");
			}

Dieser geht auch wunder bar, allerdings, wenn man schnell über die button fährt nicht.
Am liebsten wäre es mit wenn man drauf geht das es anfängt und wenn man wieder runter geht von dem frame eben wieder die animation rückwärts spielt aber ich weiß nicht wie ich das realisieren kann
 
Am liebsten wäre es mit wenn man drauf geht das es anfängt und wenn man wieder runter geht von dem frame eben wieder die animation rückwärts spielt aber ich weiß nicht wie ich das realisieren kann
Mit dem Suchbegriff "rückwärts" dürftest du hier über die Suche (Suchbereich auf Flash und Flash FAQ einschränken) einiges finden.
In einem anderen aktuellen Thread geht's auch darum ... kannst ja mal mitlesen, wie sich der entwickelt.
Tobias hat dort schon eine Rundumsorglos-Funktion gepostet. ;)
http://www.tutorials.de/forum/flash/281936-movie-umgekehrt-abspielen.html

Gruß
Rena
 
Zuletzt bearbeitet:
ahh cool hab das mal gemacht... allerdings wird dann der movieclip immer wieder rückwärds abgespielt woran könnte das liegen
 
Möglicherweise weil der Parameter loop, wenn nicht definiert, automatisch auf 1 gesetzt wird? So genau hab ich das jetzt noch nicht getestet.
Änder deinen Aufruf mal so, dass immer alle drei Parameter definiert sind, also z.B.
PHP:
playBackwards(DeinMovieClip,1,0);

Und die Forwardfunktion sollte für vor und zurück vielleicht auch noch rein, vor allem, damit der "helper" wieder gelöscht wird weil sonst "hilft" der immer weiter beim Zurückspielen was stört, wenn man z.B. wieder drüber fährt obwohl noch nicht ganz zurück gespult wurde.
PHP:
function playForwards(timeline) {
	if (timeline == undefined) timeline = this;
	timeline.playBackwardsHelper.removeMovieClip();
	timeline.play();
}
//Aufruf dann: playForwards(DeinMovieClip)
Gruß
Rena
 
Zuletzt bearbeitet:
Zurück