xml-text in einem nachgeldenen .swf per btn ändern

hioglyphix

Grünschnabel
servus allerseits

ich steh an...
ich probiere jetzt schon seit tagen diese geschichte zum laufen zu bringen. aber nix da.

::
-xml text einlesen in ein nachgeladenes swf.
-die pfade zu den zu ladenden texten per btn vom container.swf aus ändern
***

ich hab da irgend ein objektpfad-problem


kann sich das ev mal einer ansehen?

tnx
hio
 

Anhänge

  • container_xml_einlesen.zip
    16,3 KB · Aufrufe: 25
Hi,

erstmal nur zu Deiner Container-Datei (mich Durch Dein XML-Geparse zu wühlen, hab ich im Moment keine Zeit ;) ):
  • Du musst warten, bis die xml_einlesen.swf geladen ist, bevor Du die initMenu aufrufen kannst. Dazu nimm z.B. eine onEnterFrame-Methode:
Code:
container_bg.loadMovie("swf/xml_einlesen.swf");
this.onEnterFrame = function() {
	if (container_bg.getBytesLoaded() > 0 && container_bg.getBytesLoaded() >= container_bg.getBytesTotal()) {
		container_bg.initMenu("de"); 
		delete this.onEnterFrame;
	}
}
  • Die Funktion initMenu liegt in Deinem Container (container_bg) - darum musst Du sie auch dort adressieren:
Code:
btn_de.onPress = function() { 
    container_bg.initMenu("de"); 
}
btn_en.onPress = function() { 
    container_bg.initMenu("en"); 
}

Gruß
.
 
hi Datic
danke dir für deine antwort!

ich habe alle pfade angepasst

die xml-geschichte funktioniert wenn ich im "xml_einlesen.swf" noch ein:
Code:
container_bg.initMenu("de");
...einfüge. jedoch liegt diese .swf jetzt probehalber im root-verzeichnis
/////
im ausgabefenster, wenn ich "film testen" mache (den container). wird der text auch eingelesen aber nicht im swf angezeigt.

die "xml_einlesen.swf" wird auch problemlos in den container geladen

irgendwo ist da ein böser wurm drin...
 
...hier nochmal der angepasst code:

container.swf
Code:
System.useCodepage = true;
filmArray = ["container_bg"];
this.createEmptyMovieClip("container_bg", 1);
this.container_bg._x = 50;
this.container_bg._y = 50;
container_bg.loadMovie("xml_einlesen.swf");
this.onEnterFrame = function() {
	if (container_bg.getBytesLoaded()>0 && container_bg.getBytesLoaded()>=container_bg.getBytesTotal()) {
		container_bg.initMenu("de");
		delete this.onEnterFrame;
	}
};
btn_de.onPress = function() {
	container_bg.initMenu("de");
};
btn_en.onPress = function() {
	container_bg.initMenu("en");
};
this.stop();


xml_einlesen.swf
Code:
stop();
function initMenu(land) {
	meinXML = new XML();
	meinXML.ignoreWhite = true;
	meinXML.onLoad = function(geladen) {
		if (geladen) {
			trace("meinXML.loaded = "+meinXML.loaded);
			trace("meinXML.status = "+meinXML.status);
			trace("meinXML.hasChildNodes() = "+meinXML.hasChildNodes());
			anzahlKnoten = meinXML.firstChild.childNodes.length;
			trace("Anzahl der Knoten innerhalb von <root>...</root>: "+anzahlKnoten+"\n");
			anzahlKnoten_e2 = meinXML.childNodes[0].childNodes[0].childNodes.length;
			trace("Anzahl der Knoten innerhalb von <wert1>...</wert1>: "+anzahlKnoten_e2+"\n");
			for (var i = 0; i<anzahlknoten; i++) {
				wertKnoten = this.childNodes[0].childNodes[i];
				trace("wertKnoten = "+wertKnoten);
				wertInhalt = wertKnoten.firstChild.nodeValue;
				_root["Textfeld_"+i].text = wertinhalt;
				trace("wertInhalt = "+wertInhalt);
				trace("***********************************************");
				anzahlKnoten_e2 = meinXML.childNodes[0].childNodes[i].childNodes.length;
				trace("Anzahl der Knoten innerhalb von <wert1>...</wert1>: "+anzahlKnoten_e2+"\n");
				for (var j = 1; j<anzahlknoten_e2; j++) {
					wertKnoten_e2 = this.childNodes[0].childNodes[i].childNodes[j];
					trace("wertKnoten_e2 = "+wertKnoten_e2);
					wertInhalt_e2 = wertKnoten_e2.childNodes[0].nodeValue;
					_root["Textfeld_e2_"+i].text = wertInhalt_e2;
					trace("wertInhalt_e2 = "+weWrtInhalt_e2);
					trace("***********************************************");
				}
			}
		} else {
			trace("Fehler beim Laden der XML-Datei...");
		}
	};
	meinXML.load(land+"/text.xml");
}
//initMenu("de");
 
... Vermutungen (ich hab leider im Moment keine Zeit, da zu debuggen):

- der Pfad zum Textfeld ist falsch

- die Zeichen sind nicht eingebettet, aber das Textfeld liegt unter einer Maske

- html-Textfeld, bei dem der falsche Zeichensatz eingebettet ist (z.B. Fettdruck)

- Einzeiliges Textfeld bei mehrzeiligem Text

Gruß

P.S.: Lass Dir mal root["Textfeld_e2_"+i] und root["Textfeld_"+i] per trace() ausgeben - wenn die Pfade richtig sind, müssten die Instanzen angezeigt werden. Trace sonst auch mal die .text-Eigenschaft der Textfelder nach dem Zuweisen: Ist diese korrekt, kann es nur an den Einstellungen des Textfeldes liegen.
.
 
Zuletzt bearbeitet:
Achja, nochwas: Du sprichst Die Textfelder über _root an - _root verweist aber auf Deinen Hauptfilm (container.fla). Du müsstest relative Pfade verwenden oder mit _lockroot arbeiten.

Gruß
.
 
hmm...
_root um textfelder eines nachgeladenen -swf's in einem container anzusprechen wäre dann...der erstellte mc "container_bg"?

weil mit _lockroot will ich noch nicht arbeiten...
 
_root um textfelder eines nachgeladenen -swf's in einem container anzusprechen wäre dann...der erstellte mc "container_bg"?
Nö, eher diverse _parent-Konstrukte, bis Du bei dem Textfeld bist (je nachden, wo die liegen).

Tipp: Setze auf der Hauptzeitleiste eine globale Variable:
PHP:
_global.xml_root = this;
Dann kannst Du die statt _root verwenden, um auf die Hauptzeitleiste des Unterfilms zu verweisen. ;)

Gruß

EDIT: Scheinbar zeitgleich: zwei Dumme, ein Gedanke! ^^
.
 
Zuletzt bearbeitet:
Zurück