Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-12-2009, 14:46   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 5
Mehrere Probleme beim Laden einer XML-Datei

Hallo,
ich bin noch relativ jungfräulich was Flex angeht...
Mein Problem sieht momentan wie folgt aus:
Ich möchte eine XML-Datei mit URLLoader laden, je nachdem wie ichs mache bekomme ich null oder eine leere XML
Code:
	import flash.errors.IOError;
	import flash.events.*;
	import flash.net.*;
	
	public class Picture
	{
		private var picXML:XML;
		private var xmlLoader:URLLoader;
		private var debug:String = "";
		
		/**	Erstellt eine neue Instanz von Picture.
		 *	xmlURL:	URL zur XML-Datei, in der die Informationen über die Kacheln des Bildes liegen.
		 */
		public function Picture(xmlURL:String)
		{
			xmlLoader = new URLLoader();
			//Mit EventListener bekomm ich später null, da onComplete NIE aufgerufen wird.
			xmlLoader.addEventListener(Event.COMPLETE, onComplete);
			xmlLoader.load(new URLRequest(xmlURL));
			//Mit direktem Laden bekomm ich eine leere XML-Datei
			picXML = new XML(xmlLoader.data);
			
			var pos:int;
			pos = xmlURL.lastIndexOf("/");
			if(pos == -1)
				pos = xmlURL.lastIndexOf("\\");
				
			if(pos == -1)
				throw new IOError("Ungültiger Pfad!");
			
			debug += "Picture: " + xmlURL.substring(0, pos) + "/";
		}
		
		public function onComplete(event:Event) : void
		{
			//Wird nie aufgerufen!
			debug += "onComplete: COMPLETE ";	 
			picXML = new XML(xmlLoader.data);
		}
		
		public function getDirectory() : String
		{
			return debug;
		}
		
		/**	Gibt die gewünchste Kachel zurück.
		 *	zoomStep:	Gibt an in welcher Zoomstufe die gewünchste Kachel liegt.
		 *	column:		Gibt an in welcher Spalte die gewünchste Kachel liegt.
		 *	row:		Gibt an in welcher Zeile die gewünchste Kachel liegt.
		 */
		public function getTile(zoomStep:int, column:int, row:int):Tile
		{
			if(picXML == null)
			{
				//Mit Listener ist hier Schluss
				debug += " getTile: picXML = null ";
				return null;
			}
			
			//Mit direktem laden liefert xmlLoader.bytesTotal = 0
			debug += " getTile: Loader-> " + xmlLoader.bytesTotal + " XML->  " + picXML.toXMLString() + " .";
			return new Tile(debug);
		}
}
Ich weiß echt nicht woran es liegen kann, den xmlURL String hab ich auch schon direkt reingeschrieben -> ändert nichts.
Ich hoffe mir kann einer helfen, da ich bislang nichts zu meinem Problem gefunden habe.

Schonmal Danke
Sam

Geändert von OmikronXi (30-12-2009 um 14:50 Uhr)
OmikronXi ist offline   Mit Zitat antworten
Alt 30-12-2009, 19:43   #2 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Code:
import flash.events.*;
import flash.net.*;

private var m_xml:XML;

public function LoadXML( url:String):void
{
	var myLoader:URLLoader = new URLLoader();
	var req:URLRequest = new URLRequest( url); 
	myLoader.addEventListener(Event.COMPLETE, loadXMLComplete, false, 0, true);
	myLoader.addEventListener( IOErrorEvent.IO_ERROR, OnIoError, false, 0, true);
	myLoader.load(req);
}

private function OnIoError(event:IOErrorEvent):void 
{
	trace( event.text);
}

protected function loadXMLComplete(e:Event):void 
{
	try {
		m_xml= XML( e.target.data);
	} catch(err:Error){}
}
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4

Geändert von toosten (30-12-2009 um 19:45 Uhr)
toosten ist offline   Mit Zitat antworten
Alt 30-12-2009, 19:49   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 5
...also ich hab das jetzt mal in mein Programm eingebunden....
aber die onIoError-Methode wird auch nicht aufgerufen!
OmikronXi ist offline   Mit Zitat antworten
Alt 30-12-2009, 19:51   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Zitat:
Zitat von OmikronXi Beitrag anzeigen
...also ich hab das jetzt mal in mein Programm eingebunden....
aber die onIoError-Methode wird auch nicht aufgerufen!
Das passiert auch nur wenn die Datei nicht gefunden wird!
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 30-12-2009, 20:01   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 5
Dann weiß ich nicht was mir der Code-Schnipsel hätte bringen sollen.
OmikronXi ist offline   Mit Zitat antworten
Alt 30-12-2009, 20:08   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Zitat:
Zitat von OmikronXi Beitrag anzeigen
Dann weiß ich nicht was mir der Code-Schnipsel hätte bringen sollen.
Wenn alles glatt läuft ein gefülltes XML-Object ( m_xml)!
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 30-12-2009, 20:16   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 5
Naja, bis auf das IOError-Zeug ist das ja genau das Gleiche wie ich es hatte.
Habs zur Sicherheit mal Copy/Paste in mein Programm getan -> selbes Ergebnis:
loadXMLComplete wird gar nicht aufgerufen.
OmikronXi ist offline   Mit Zitat antworten
Alt 30-12-2009, 20:53   #8 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 21
Naja, ich weiß nun nicht, ob das in einer Klasse funktioniert (weil nie ausprobiert und noch nirgendwo was gelesen), aber zum Laden einer XML-Datei (auch wenn sie eine PHP-Datei ist, deren Ausgabe XML-Struktur hat) finde ich, ist ein HTTPService sehr schön und handlich.

HTTPService @ Adobe Flex Help
Marsds ist offline   Mit Zitat antworten
Alt 01-01-2010, 13:04   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 5
Also HTTP-Service hat mir da jetzt auch ned wirklich was gebracht.
Aber jetzt gehts...der hatte wohl was gegen meinen relativen Pfad (der aber stimmt), wenn ich auf das ganze absolut über http zugreife funktionierts.

Naja auch egal...hauptsache er lädts endlich
OmikronXi ist offline   Mit Zitat antworten
Alt 01-01-2010, 13:18   #10 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Exclamation

Zitat:
Zitat von OmikronXi Beitrag anzeigen
Aber jetzt gehts...der hatte wohl was gegen meinen relativen Pfad (der aber stimmt), wenn ich auf das ganze absolut über http zugreife funktionierts.
ROOT-Path ermitteln:
Code:
var swf:String= loaderInfo.loaderURL;
var root:String= swf.substr( 0, swf.lastIndexOf( "/")+1);
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
urlloader, xml

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme beim Laden einer XML-Datei tschabaluga ActionScript 2 3 16-04-2009 22:29
Probleme beim Laden einer SWF Datei! Stillmatic Flash Einsteiger 8 22-05-2008 15:50
Probleme beim laden einer txt datei in Flash stuffzi Flash Einsteiger 3 03-05-2006 22:26
Probleme beim Laden einer txt-Datei in ein dyn. Textfeld!!! whykiki1 Flash MX 2004 10 06-03-2005 18:58
Probleme mit dem Beenden beim Laden einer externen txt-Datei Birgitblümchen Flash 4 und Flash 5 6 21-06-2003 06:47


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

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


Copyright ©1999 – 2012 Marc Thiele