XML Navigation und Movieclipverschachtelung

morgenstern

Erfahrenes Mitglied
Hallo Leute!

Leider muss ich euch wieder quälen. :(

Es geht um folgendes:

Ich habe eine Schaltfläche über die ich einen MovieClip ein- und ausblenden kann. (MC-name: navigation)

Nun möchte ich den MovieClip per XMl-Datei füllen und daraus die Navigation erstellen.

Ich habe also einen MC(navigation) mit 2 Bildern (Zeitleiste):

Frame 1 AS:
Code:
stop();
var XMLdaten = new XML();
XMLdaten.ignoreWhite = true;
XMLdaten.load("links.xml");
XMLdaten.onLoad = function(success) {
	anzahl = XMLdaten.firstChild.childNodes.length;
	//liest die anzahl der elemente aus!
	anz = [];
	//neues array
	anz2 = [];
	//neues array
	for (var i = 0; i<anzahl; i++) {
		anz[i] = XMLdaten.firstChild.childNodes[i].attributes.anzeige;
		//auslesen
		anz2[i] = XMLdaten.firstChild.childNodes[i].attributes.url;
		//auslesen
	}
	gotoAndStop(2);
};

Frame 2 AS:

Code:
stop();
formatLink = new TextFormat();
with (formatLink) {
	color = 0xFFFFFF;
	bullet = false;
	underline = false;
	bold = true;
	font = "verdana";
	size = 13;
}
//
for (var i = 0; i<anzahl; i++) {
	_root.createTextField("teext"+i, i, 135, i*20, 0, 0);
	_root["teext"+i].autoSize = true;
	_root["teext"+i].text = anz[i];
	_root["teext"+i].setTextFormat(formatLink);

}

XML Datei:
Code:
<?xml version='1.0' encoding='utf-8'?>
<felder>
	<feld anzeige="Link1" url="http://www.google.com"/>
	<feld anzeige="Link2" url="http://www.google.com"/>
	<feld anzeige="Link3" url="http://www.google.com"/>
	<feld anzeige="Link4" url="http://www.google.com"/>
</felder>

Die XML-Datei wird problemlos aufgerufen und verarbeitet. Nur, wie mache ich aus den einzelnen Feldern Links zu HTML/PHP Seiten (ohne Frames).

2. Frage: Wie bringe ich diese Links in meinen vorhanden Movieclip (Navigation), der erst per Click auf den Button erscheint bzw wieder ausgeblendet wird? Ein Textfeld kann ich ja nicht per visible ansprechen oder? Zurzeit ist der Text immer sichtbar.

Danke im voraus.

mfg
 
Hier ein Update. ich habe es geschafft die meisten Probleme zu lösen, jedoch habe ich noch ein kleines.

Damit die Schrift ein und ausgeblendet wird, habe ich sie einfach in MCs gepackt. Jetzt möchte ich noch, dass ich sie einzeln verlinken kann. Dies habe ich auch geschafft, jedoch habe alle Menüpunkte den selben Link(den letzten Link in der XMl-File) . Kann mir hier wer helfen?

Edit: Einen MouseOver mit einer anderen Schirftfarbe bräuchte ich auch. Wie würde das gehen?

Hier der Code:

Code:
stop();
formatLink = new TextFormat();
with (formatLink) {
	color = 0xFFFFFF;
	bullet = false;
	underline = false;
	bold = true;
	font = "verdana";
	size = 13;
}
//


for (var i = 0; i<anzahl; i++) {
	my_target = "_blank";
	my_url = anz2[i];
	this.createEmptyMovieClip("container"+i, 100);
	this.createTextField("teext"+i, i, 0, i*20, 0, 0);
	this["teext"+i].autoSize = true;
	this["teext"+i].text = anz2[i];
	this["teext"+i].setTextFormat(formatLink);
	this.onRelease = function() {
    getURL(my_url, my_target);
}
}

Hier die XML Datei:

Code:
<?xml version='1.0' encoding='utf-8'?>
<felder>
	<feld anzeige="Link1" url="http://www.google.de"/>
	<feld anzeige="Link2" url="http://www.yahoo.de"/>
	<feld anzeige="Link3" url="http://www.lycos.de"/>
	<feld anzeige="Link4" url="http://www.gmx.de"/>
</felder>


mfg
 
Hi,

Code:
for (var i = 0; i<anzahl; i++) {
	var obj = this.createEmptyMovieClip("container" + i, i + 100);
	obj._x = i * 20;
	obj._url = anz2[i];
	obj._tgt = "_blank";
	var tf = obj.createTextField("tf", 1, 0, 20, 20, 10);
	tf.autoSize = true;
	tf.text = anz2[i];
	tf.setTextFormat(formatLink);
	obj.onRelease = function() {
		getURL(this._url, this._tgt);
	}
}

Gruß
.
 
Hallo und Danke!

Leider funktioniert es nicht. Der text wird nicht mehr dargestellt, ich habe jedoch einen aktiven, verstecken Link. Wenn ich diesen anklicke, öffnet sich einen neues Browserfenster mit dem Movie (swf).

Irgendwelche Ideen?
 
Hallo!

Hab ich ganz vergessen anzuhängen, sorry!

Wahrscheinlich liegts an meiner Unfähigkeit, dass es nicht klappt :)

Relativ groß, weil ein Bild (map zum Scrollen) im File enthalten ist.

mfg
 

Anhänge

  • xml.zip
    170,9 KB · Aufrufe: 16
Hi,

ich bin davon ausgegangen, dass es sich mindestens um Flash 8 handelt. Ab dieser Version gibt die createTextfield-Methode eine Referenz auf das erstellte Textfeld zurück.

Für Flashplayer 6 musst Du es so schreiben:
Code:
for (var i = 0; i<anzahl; i++) {
	var ct = this.createEmptyMovieClip("container" + i, 200 + i);
	ct.createTextField("tf", 1, 0, 0, 20, 10);
	var tf = ct["tf"];
	tf.autoSize = true;
	tf.multiline = false;
	tf.text = anz2[i];
	tf.setTextFormat(formatLink);
	ct._y = i * 20;
	ct._myurl = anz2[i];
	ct.onRollOver = function() {
		this._x = 10; // beliebiger Hover-Effekt
	}
	ct.onRollOut = ct.onDragOut = function() {
		this._x = 0;
	}
	ct.onRelease = function() {
		getURL(this._myurl, "_blank");
	}
}

Gruß
.
 
Danke! Ich werd es gleich testen.

ich ahbe eigentlich Flash CS3 - habe es als flash 8 Film gespeichert.

War dies ein Fehler? Oder liegt es am Flash player?
 
... mag sein, aber Du exportierst für Flashplayer 6:

publish.jpg

Stell es auf 8 oder 9 um - mein letzter Code sollte in allen Versionen funktionieren.

Gruß
.
 

Neue Beiträge

Zurück