Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2006, 14:05   #1 (permalink)
Padawan
 
Benutzerbild von Seebold
 
Registriert seit: Dec 2005
Ort: Hannover
Beiträge: 75
Question XML-Loader local/remote/TYPO3 | seltsames Verhalten bei Firefox

Hallo,
wie häufig kommt es vor, dass alles geht, nur der IExplorer Unfug macht. Bei mir ist es mal anders. In meinem Projekt werden XML-Daten serverseitig über ein Script ausgeliefert. Ein Fortschriftsbalken visualisiert den Ladezustand.
Opera und IExplorer stellen alles im TYPO3-Kontext prima dar, die XML-Daten werden verarbeitet und angezeigt. Nur Mozilla Firefox zeigt es nur in seltenen Fällen an, aber meistens ist das XML-Objekt leer und der Film bricht ab, weil XMLObj.loaded=false ist.
Der Flash-Player ist im übrigen identisch mit dem aus Opera Leider zeigen Opera und IExplorer das gleiche Verhalten wie Firefox, wenn der Film mit der von Flash erstellten HTML-Datei remote aufgerufen wird... Achso: eine XML-Datei, die nicht vom Skript erstellt werden muss, sondern schon fertig vorliegt, funktioniert. Liegt also möglicherweise an einer Zeitverzögerung?

Hier mal die wichtigen Teile meines Film:

Übergabe der Script-URL im HTML-Code durch:
PHP-Code:
<param name="FlashVars" value="quellurl=index.php%3Fid%3Dexport_dichte_gem%26tier%3D26%26divisor%3D1" /> 
Aufbau der XML-Datei (im Original hat sie sehr viele Datensätze):
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<populationskarte tier="2">
  <element id="farben">
    <farbe wert="#1D0B7F" von="-1" bis="-1" />
    <farbe wert="#FFDFBE" von="0" bis="0" />
    <farbe wert="#FFFFFF" von="0" bis="1" />
    <farbe wert="#FFBE7F" von="1" bis="1.5" />
    <farbe wert="#E67200" von="1.5" bis="2" />
    <farbe wert="#895C00" von="2" bis="3" />
    <farbe wert="#370900" von="3" bis="" />
  </element>
  <element id="gemeinden">
    <gemeinde sgn="101000" name="Braunschweig" zusatz="Stadt" flaecheHA="-1" />
    <gemeinde sgn="102000" name="Salzgitter" zusatz="Stadt" flaecheHA="-1" />
    <gemeinde sgn="103000" name="Wolfsburg" zusatz="Stadt" flaecheHA="-1" />
    <gemeinde sgn="151025" name="Sassenburg" zusatz="" flaecheHA="-1" />
    <gemeinde sgn="151040" name="Wittingen" zusatz="Stadt" flaecheHA="-1" />
    <gemeinde sgn="151401" name="Boldecker Land" zusatz="" flaecheHA="-1" />
    <gemeinde sgn="151402" name="Brome" zusatz="" flaecheHA="-1" />
    <gemeinde sgn="151403" name="Hankensbüttel" zusatz="" flaecheHA="-1" />
    <gemeinde sgn="151404" name="Isenbüttel" zusatz="" flaecheHA="-1" />
    <!-- und weitere -->
  </element>
  <element id="populationen">
    <satz jahr="2000">
      <data sgn="0" wert="8.09717" />
      <data sgn="101000" wert="1.36498" />
      <data sgn="102000" wert="0.258092" />
      <data sgn="103000" wert="1.27375" />
      <data sgn="151009" wert="1.4522" />
      <data sgn="151025" wert="0.567054" />
      <data sgn="151040" wert="1.47234" />
      <data sgn="151401" wert="1.25783" />
      <data sgn="151402" wert="1.10187" />
      <data sgn="151403" wert="1.44045" />
      <data sgn="151404" wert="0.816621" />
      <!-- und weitere-->
    </satz>
    <satz jahr="2001">
      <data sgn="101000" wert="1.35155" />
      <data sgn="102000" wert="0.292936" />
      <data sgn="103000" wert="1.17789" />
      <data sgn="151009" wert="1.1981" />
      <data sgn="151025" wert="0.813689" />
      <data sgn="151040" wert="1.58527" />
      <data sgn="151401" wert="1.0815" />
      <data sgn="151402" wert="1.11485" />
      <data sgn="151403" wert="1.47829" />
      <data sgn="151404" wert="0.880751" />
      <!-- und weitere-->
    </satz>
  </element>
</populationskarte>
Frame-Script "XML-Ladevorgang starten":
PHP-Code:
if (objXML == undefined) {
    
objXML = new (XML)();
    
objXML.load(_root.quellurl);
    
objXML.ignoreWhite true;
    var 
timer=getTimer()+10000;
}

_root.onEnterFrame = function() {
    
gesamt =objXML.getBytesTotal();
    
bereits objXML.getBytesLoaded();
    
prozent int(bereits*100/gesamt)
    
msg "Datenimport: "+prozent "%";
    if (
_root.mc_XMLLoader.txt_loader.text <> msg) {
        
_root.mc_XMLLoader.txt_loader.text msg;
        
timer=getTimer()+10000;
    }
    
_root.mc_XMLLoader.gotoAndStop(prozent);

    
    if (
prozent == 100) {
        
_root.mc_XMLLoader.gotoAndStop(100);
        
_root.mc_XMLLoader.txt_loader.text "Datenimport: 100%";
        
wait(2)
        
delete _root.onEnterFrame;
        
gotoAndPlay(10);
    } else 
gotoAndPlay(5);
    
    if (
getTimer()>timererror("Datenübertragung missglückt (timeout)")
}

objXML.onLoad = function(status) {
    if (
status) {        
        
delete _root.onEnterFrame;
        
gotoAndPlay(10);
    } else {
        
error("Datenübertragung missglückt (onLoad)");
    }

Und die Verarbeitung der XML-Datei bis Abbruch-Sequenz:

PHP-Code:
import mx.xpath.XPathAPI;

init(1);
stop();

function 
init(signal) {
    
_error false;
    if (
objXML.status 0_error "Datenübermittlung fehlgeschlagen (status:"+objXML.status+")"
    if (
objXML.loaded == false && _error==false_error="Datenübermittlung fehlgeschlagen (loaded:false).";
//Hier bricht der Film ab und gibt obenstehende Fehlermeldung aus.
    
if (signal) {
        
//Jahreszahlen ermitteln
        
var arr_temp XPathAPI.selectNodeList(objXML.firstChild"populationskarte/element[@id='populationen']/satz[@jahr]");
        if (
arr_temp.length == && _error==false_error "Jahresdaten konnten nicht aus XML extrahiert werden."
[...] 
Da ich schon lange an dem Problem knuspere und der Film eigentlich schon lange online sein soll, würde ich mich freuen, wenn mir jemand helfen könnte...

Danke
Seebold
Seebold ist offline   Mit Zitat antworten
Alt 08-02-2006, 14:55   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 14
[STUFF] Sandbox, UTF-8, Cache Problemlösung... [MXP-FlashExtension+PHP]

schau mal ob es damit geht , wenn nicht wird das an dem script liegen das das xml erstellt, ich habe festgestellt das manche asp / cfm seiten die xml generieren im flash eines einlesens durch einen flashclient bzw via php, eine eingebaute fehlerroutine haben, sozusagen wie eine seite 404 ."bitte wenden sie sich an den netzwerkadmin...." dann kann man da nichts machen ausser du bewegst die leute dazu ein xml rpc modul zur verfügung zu stellen oder etwas am errorhandling zu machen
javatis ist offline   Mit Zitat antworten
Alt 09-02-2006, 15:47   #3 (permalink)
Padawan
 
Benutzerbild von Seebold
 
Registriert seit: Dec 2005
Ort: Hannover
Beiträge: 75
Extension funzt, löst aber das Problem nicht

Vielen Dank für den Hinweis auf deine Extension -- nur kommt am Ende kein XML-Objekt heraus, dodern ein Objekt mit 2 Elementen ohne ChildNodes..., oder?
Wir haben in der zwischenzeit herausgefunden, dass die XML-Datei scheinbar zu groß ist und Firefox den Download abbricht. Jetzt habe ich die XML-Datei gezippt und hoffe, dass es reicht. Sonst werde ich die Datei wohl in einzelne Schnipsel teilen müssen :-(

Aber danke noch mal für die Hilfe.
Seebold ist offline   Mit Zitat antworten
Alt 09-02-2006, 16:08   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 14
Zitat:
Zitat von Seebold
Vielen Dank für den Hinweis auf deine Extension -- nur kommt am Ende kein XML-Objekt heraus, dodern ein Objekt mit 2 Elementen ohne ChildNodes..., oder?
Nein da kommt schon valides utf-8 codiertes XML heraus, ich habe die extension eigentlich entwickelt um das "Sandbox" problem zu lösen und wil manche Server bei Anfragen eines flashclients diesen nicht akzeptieren und einen falschen header schicken, was durch eine pufferung in php vermieden wird (nicht immer), naja und weil ich von fremdservern daten lud und die fast nie utf-8 codiert waren hab ich das auch intern gelöst.

Sinn und prinzip ist eigentlich das man mittels einer php datei die xml von einem lokal ordner aus geladen wird, dort intern utf-8 codiert, da ich öfters das problem hatte das man immerwieder daten aus dem cache liest habe ich dies auch mit berücksichtigt und da auf mein webspace gerade umgezoen ist und ich mich umstellen muste auf eine neu php version... aber egal


Zitat:
Zitat von Seebold
Wir haben in der zwischenzeit herausgefunden, dass die XML-Datei scheinbar zu groß ist und Firefox den Download abbricht. Jetzt habe ich die XML-Datei gezippt und hoffe, dass es reicht. Sonst werde ich die Datei wohl in einzelne Schnipsel teilen müssen :-(

Aber danke noch mal für die Hilfe.
eine frage wie gross ist die datei?...

zu grosse datei kenn ich eigentlich nicht 60.000 und 100.000 zeichen hatte ich schon ohne probleme and so wie ich las geht es wohl bis 2 mb grösse problemlos.

evtl ein serverseitiger timeout?

Geändert von javatis (09-02-2006 um 16:09 Uhr)
javatis ist offline   Mit Zitat antworten
Alt 09-02-2006, 16:44   #5 (permalink)
Padawan
 
Benutzerbild von Seebold
 
Registriert seit: Dec 2005
Ort: Hannover
Beiträge: 75
Talking Problem gefunden

Im Frame-Script "XML-Ladevorgang starten" ist ein Absprung auf "if (prozent==100)". Scheinbar reagiert Firefox etwas zu schnell und spring schon zur Verarbeitung, bevor das XML-Objekt eingerichtet ist.
Besser ist natürlich der Absprung bei ObjXML.onLoad

Aber danke trotzdem. Vielleicht muss ich mir Deine Extension noch mal ansehen und schauen, wo bei mir das Problem lag. Sorry.
Seebold ist offline   Mit Zitat antworten
Alt 09-02-2006, 17:36   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 14
kein problem

übrigens zwar undokumentiert aber die exentsion hat noch 3 weitere funktionen ... helfen dir zwar nicht aber so nebenbei:

Meinfpps.getKbsTotal()
Meinfpps.getKbsLoaded()
Meinfpps.getPercentLoaded()

Allerdings sehe ich gerade das du eh einen denkfehler hast ich weiss zwar nicht wie der Rest deiner flash datei aussieht aber normalerweise legt man die ausführenden funktionen in den onLoad event um zu verhindern das die daten noch nicht da sind, das selbe wäre im vergleich bei meiner extension der onParse "event" also solltest du alle funktionen in den onLoad event stecken, dann kannst du sicher sein das alle daten da sind.
javatis ist offline   Mit Zitat antworten
Alt 09-02-2006, 17:52   #7 (permalink)
Padawan
 
Benutzerbild von Seebold
 
Registriert seit: Dec 2005
Ort: Hannover
Beiträge: 75
Genau!

respektive vom onLoad in den Frame springen, der die Funktionen enthält. So hab ich s jetzt. Wenn onLoad fehlschlägt, läd er den Errorfilm in _root. Somit können auch nicht aus versehen die Funktionen doch noch ausgeführt werden :-)

Stimmt, die Funtkionen hatte ich vermisst, da ohne die der Fortschrittsbalken langweilt. Hab sie mir in die ReadMe kopiert.

Grüße
Seebold ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele