Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-01-2012, 14:16   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 2
XMLParser in anderer Klasse verwenden funktioniert nicht

Hallo erstmal hier an alle!!

ich habe für ein Flash Projekt jetzt eine XML Datei erstellt, aus der ich ein paar Konfigurationen reinhole, die der Benutzer änder kann. Dazu hab ich eine eigene Klasse "XMLParser" erstellt, die ich in anderen Klassen gerne aufrufen möchte, um auf die Einstellungen zuzugreifen.
In der Klasse befindet sich eine Methode, die sich "loadXML" nennt. Dort werden die eingelesen Daten in ein array gespeichert. Innerhalb dieser Methode kann ich auch auf die Werte im Array zugreifen.
Ich dachte, ok, alles i.O., einfach ein paar getter erstellen um die Werte in andere Klassen zu bekommen, aber eben das funktioniert nicht. Ich erhalte immer, null, bzw 0,...
Auch die in der XMLParser erstellte Methode printSettings() liefert mir nur "undefined", wenn ich sie im Konstruktor aufrufe.

Hier mal der Code:
PHP-Code:
package  {
    
import flash.filesystem.File;
    
import flash.events.Event;
    
import flash.net.URLRequest;
    
import flash.net.URLLoader;
    
    public class 
XMLParser {
        
        public static const 
XMLFILE String "KaffeeDJ/config.xml";
        private var 
xmlLoader:URLLoader = new URLLoader();
        private var 
xmlData:XML;
        private var 
xmlFile:File;
        private var 
confArray:Array = new Array();
        private var 
test:String;

        public function 
XMLParser() {
            
            
xmlFile File.documentsDirectory.resolvePath(XMLFILE);
            
xmlLoader.load(new URLRequest(xmlFile.url));
            
xmlLoader.addEventListener(Event.COMPLETEloadXML);
            
printSettings();
        }
        
        private function 
initArray(event:Event) {
            
trace("Do Something");
        }
        
        
        private function 
loadXML(e:Event):void {
            
xmlData = new XML(e.target.data);
            
            for (var 
i:Number 0xmlData.setting.length(); i++) {
                
confArray.push(xmlData.setting[i].socket.text());
                
confArray.push(xmlData.setting[i].sensorPlay.text());
                
confArray.push(xmlData.setting[i].sensorRec.text());
                
confArray.push(xmlData.setting[i].debugMode.text());
                
confArray.push(xmlData.setting[i].mp3Name.text());
            }
            
            
trace("##Parser: " confArray[4]);
        }
    
        private function 
printSettings():void {
            
trace("* " confArray[0]);
            
trace("* " confArray[1]);
            
trace("* " confArray[2]);
            
trace("* " confArray[3]);
            
trace("* " confArray[4]);
        }
        
        public function 
getSocket():int {
            return 
int(confArray[0]);
        }
        
        public function 
getSensorPlay():int {
            return 
int(confArray[1]);
        }
        
        public function 
getSensorRec():int {
            return 
int(confArray[2]);
        }
        
        public function 
getDubugMode():Boolean {
            return 
Boolean(confArray[3]);
        }
        
        public function 
getMP3Name():String {
            return 
confArray[4];
        }
        
        public function 
getTest():String {
            return 
test;
        }
        


    }
    

kann mir vielleicht jemand sagen woran das liegen könnte?!?

lg dipo
dipo01 ist offline   Mit Zitat antworten
Alt 27-01-2012, 14:22   #2 (permalink)
Neuer User
 
Benutzerbild von andrelehnert
 
Registriert seit: Oct 2007
Ort: Kölle
Beiträge: 1.231
HI,

Du kannst erst auf die XML-Daten zugreifen, wenn sie geladen sind...
Deshalb pack Deine Ausgabe mit in den Complete Handler.
Außerdem kannst Du im Complete Hanlder ein Event dispatchen, das der instanzierenden Klasse sagt, jetzt auf die Daten zugreifen zu können.
In der instanzierenden Klasse mußt Du dann nur noch auf dieses Event hören und dann die Daten abfragen.

LG ANdré
__________________
Die Hoffnung stirbt zuletzt.
Aber sie stirbt.
andrelehnert ist offline   Mit Zitat antworten
Alt 27-01-2012, 15:38   #3 (permalink)
Knallrot
 
Benutzerbild von Mr.Sunburn
 
Registriert seit: Mar 2010
Beiträge: 159
Wenn du eine AIR Anwedung schreibst und die XML auf deiner FEstplatte liegt kannst du sie mit dem FileStream Objekt auch synchron laden und brauchst den URLLoader nicht mehr und musst nicht warten bis es fertig geladen ist.
Mr.Sunburn ist offline   Mit Zitat antworten
Alt 27-01-2012, 17:26   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 2
Zitat:
Zitat von Mr.Sunburn Beitrag anzeigen
Wenn du eine AIR Anwedung schreibst und die XML auf deiner FEstplatte liegt kannst du sie mit dem FileStream Objekt auch synchron laden und brauchst den URLLoader nicht mehr und musst nicht warten bis es fertig geladen ist.
vielen dank, damit hats funktioniert!
dipo01 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
klasse von anderer klasse ansprechen destroy90210 ActionScript 2 7 06-01-2008 09:24
Funktion aus anderer Klasse aufrufen: einmal funktionerts, einmal nicht andiwand ActionScript 2 3 10-06-2007 13:10
[mod_rewrite] Id oder anderer Schlüssel im Pfad verwenden? poffi Server-Seite allgemein 3 12-04-2006 10:21
Methode einer Klasse aus anderer Klasse aufrufen Chris M. Softwarearchitektur und Entwurfsmuster 5 05-01-2005 15:04
Gleicher Preload funktioniert einmal und bei anderer Datei NICHT!! Oekel Flash MX 2004 1 24-05-2004 18:15


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele