Flash (MX) - xml-Datei vorladen

jamons

Grünschnabel
Hallo zusammen,

ich komme nicht weiter , mit dem unten beschriebenen Script, dass ich ihm
ersten Keyframe stehen habe, wollte ich eigentlich erreichen, dass bevor der
Inhalt der xml-Datei geladen wird, die Meldung erscheint: "searching files...".
Ich bekomme das einfach nicht hin,entweder schaffe ich es, dass die Meldung erscheint,
dann wird aber die xml-Datei nicht geladen oder es wird die xml geladen, dann erscheint
aber nicht die Ladeanzeige mit der Meldung "searching files". Ich wollte die Sache
ganz einfach halten- in der xml steht ein einfacher Text.
Was mache ich falsch oder hat einer von euch sogar mal ein funktionierendes Beispiel für mich.
Ich bin für jede Hilfe dankbar, da ich wirklich nicht weiter weiß.
Danke schon mal

Gruss
jamons
_____________________________________
PHP:
var m = new XML();
m.ignoreWhite = true;
m.onLoad = function(ok) {
if (ok) {
var t = this.firstChild.firstChild.childNodes[0].nodeValue;
todo.htmlText = t.split("\n").join("");
_root.meldung.text = "myVars geladen"; 
this.onEnterFrame = function() 
{
var r_ist = _root.getBytesLoaded();
var r_soll = _root.getBytesTotal();
var r_proz = Math.ceil(r_ist/r_soll*100);
all.htmlText = r_soll+" b ";
stat.htmlText = r_proz;
totaldone.htmlText = r_ist+" b";
if (r_ist>=r_soll) 
{
delete this.onEnterFrame;
todo.htmlText = newline+newline+newline+" searching files...";

inter = setInterval(function () { clearInterval(inter);delete inter;todo.htmlText = "";go();}, 2000);
}
};

}
};
m.load("texte2.xml");
_____________________________________________________________________
 
Hi,

Nimm die onEnterFrame-Methode aus dem onLoad-Handler raus. So wie ich es verstehe, soll das ja ausgeführt werden, bis die Datei geladen ist, und dann aufhören.
PHP:
var m = new XML();
m.ignoreWhite = true;
m.load("texte2.xml");
this.onEnterFrame = function() {
    var r_ist = _root.getBytesLoaded();
    var r_soll = _root.getBytesTotal();
    var r_proz = Math.ceil(r_ist/r_soll*100);
    all.htmlText = r_soll+" b ";
    stat.htmlText = r_proz;
    totaldone.htmlText = r_ist+" b";
    todo.htmlText = newline+newline+newline+" searching files...";
    if (r_ist>=r_soll)  delete this.onEnterFrame;
}

m.onLoad = function(ok) {
    if (ok) {
        var t = this.firstChild.firstChild.childNodes[0].nodeValue;
        todo.htmlText = t.split("\n").join("");
        _root.meldung.text = "myVars geladen";
    }
}

Gruß

P.S.: Bitte verwende das nächste Mal Code- oder PHP-Tags zum Darstellen von Code, danke!
.
 
Datic hat gesagt.:
Hi,

Nimm die onEnterFrame-Methode aus dem onLoad-Handler raus. So wie ich es verstehe, soll das ja ausgeführt werden, bis die Datei geladen ist, und dann aufhören.
PHP:
var m = new XML();
m.ignoreWhite = true;
m.load("texte2.xml");
this.onEnterFrame = function() {
var r_ist = _root.getBytesLoaded();
var r_soll = _root.getBytesTotal();
var r_proz = Math.ceil(r_ist/r_soll*100);
all.htmlText = r_soll+" b ";
stat.htmlText = r_proz;
totaldone.htmlText = r_ist+" b";
todo.htmlText = newline+newline+newline+" searching files...";
if (r_ist>=r_soll) delete this.onEnterFrame;
}
 
m.onLoad = function(ok) {
if (ok) {
var t = this.firstChild.firstChild.childNodes[0].nodeValue;
todo.htmlText = t.split("\n").join("");
_root.meldung.text = "myVars geladen";
}
}

Gruß

P.S.: Bitte verwende das nächste Mal Code- oder PHP-Tags zum Darstellen von Code, danke!
.

Ja genau - ich werde das später nochmal austesten ! Danke für deine schnelle Hilfe!
P.S: Sorry, wegen der fehlenden Code-\PHP-Tags- beim nächsten Mal denke ich dran !
 
Sorry, jetzt hab' ich das Problem, dass ganz kurz der Inhalt der XML angezeigt wird,dieser wieder verschwindet und dann erst die Meldung "searching files..." erscheint (die auch dann
stehen bleibt)-eigentlich möchte ich es ja umgekehrt !

Ich verstehe das irgendwie nicht mehr !
Habt ihr noch eine Idee? Ich weiß auch gar nicht , wo ich jetzt den Fehler mache!

Gruss
 
Hi,

versuch mal folgendes:
PHP:
m.onLoad = function(ok) {
    showXM(this, ok);
}

function showXML(obj, ok) {
    delete this.onEnterFrame;
    if (ok) {
        var t = this.firstChild.firstChild.childNodes[0].nodeValue;
        todo.htmlText = t.split("\n").join("");
        _root.meldung.text = "myVars geladen";
    }
}
Wenn es dennoch nicht klappt, poste bitte mal Deine ganze Datei, denn ich habe das Gefühl, etwas im Dunkeln herumzustochern. ;)

Gruß
.
 
Danke Datic, dass du mehr hilfst !

Ich habe mal die Dateien angehangen. Als Zusatzinfo : die xml_test.fla bzw. xml_test.swf wiederum wird mit loadMovie("xml_test.swf", "dummy"); in den Hauptfilm geladen.

Der Stand ist jetzt, wenn ich die ganze Sache online teste, dass es einmalig funktioniert,
dannach tritt dann das Problem auf, das ich oben schon erwähnte ( XML erscheint ganz kurz,verschwindet dann wieder und erst danach erscheint die Meldung "searching files...".
Wenn ich danach den Cache wieder lösche und den Hauptfilm erneut aufrufe -funktioniert
die Sache wieder einmalig-sobald ich aber die xml_test über das Menü ein zweites
mal lade , tritt der beschriebene Fehler auf.

Ich hoffe, ich habe Dich jetzt nicht ganz verwirrt und du weißt, was ich meine bzw. mein Problem ist.

Gruss
 

Anhänge

  • test_upload.zip
    34,6 KB · Aufrufe: 11
Hi,

hmm... was willst Du nun eigentlich genau vorladen, Deinen Flashfilm oder die XML-Datei? Beides gleichzeitig geht so nicht... die XML-Datei wird ja erst geladen, wenn Dein MovieClip (Symbol 82) geladen ist. Die Textfelder "all", "stat" und "totaldone" existieren nicht. Mit _root.getBytesLoaded() bekommst Du den Ladestatus des Hauptfilms, der an dieser Stelle für Dich uninteressant ist. Auf das Laden der XML-Datei kannst Du natürlich mit dieser onEnterFrame-Methode warten, wenn Du sie bei m.onLoad löschst (das ist ja schon so). Nun ist diese XML-Datei natürlich sehr klein, sprich: das Laden dauert nur den Bruchteil einer Sekunde (online vielleicht 1-2 Sekunden). Auch werden geladene Dateien gecached. Wenn sich der Inhalt der XML-Datei ändert, kannst Du beim Laden eine zufallsgenerierte (oder halbwegs eindeutige) Zahl an die URL anhängen, z.B. so:
PHP:
m.load("texte.xml?stamp=" + getTimer().toString());
Preloader machen eigentlich weniger Sinn bei kurzen Text- oder XML-Dateien und lohnen sich eher bei Bildern und nachgeladenen Flashfilmen.

Gruß
.
 
Hi,

ja ich glaube, da liegt schon das Problem, dass ich erst die swf extern in den Hauptfilm lade und dann von der swf die XML wieder laden will.

Ich versuche heute abend da nochmal anzusätzen.

Danke schon mal.

Gruss
 
Nach mehreren Litern Kaffee habe ich endlich die Lösung....

PHP:
 var output_xml = new XML();
output_xml.ignoreWhite = true;
output_xml.onLoad = function(success){
 if (success){
  var security = this.firstChild;
  var url = security.attributes.url;
  var textNode = security.firstChild;
  
  todo.htmlText = textNode.nodeValue + "<br><br><a href='" + url + "'>" + url + "</a>";
 }else todo_txt.text = "Error loading XML";
}
{
 todo.text = "searching files...";
 output_xml.load("texte2.xml");
}

@Datic - danke für deine Unterstützung !

Gruss
 
Kleine Änderung:

PHP:
 var output_xml = new XML();
 output_xml.ignoreWhite = true;
 output_xml.onLoad = function(success){
 	if (success){
 		var t = this.firstChild.firstChild.childNodes[0].nodeValue;
 		
 		
 		todo.htmlText = t.split("\n").join("");
 	}else todo.text = "Error loading XML";
 }
 
 {
 	todo.text = "searching files...";
 	output_xml.load("texte2.xml");
 }

Gruss
 
Zurück