Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-02-2011, 00:57   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
Speichern Daten

Hey Zusammen,

ich würde gerne aus einer XML-Datei verschiedene Daten speichern und zur weiterverarbeitung weiter geben. Beispielsweise gibts es verschiedene Partys mit verschieden Daten. Party1, Party2 - mit Zeit, Datum und Eintritt.
Ich würde gerne bei der Speicherung einen Dynamischen Namen anlegen, in einem Vector oder Array und darin dann die Daten speichern. Das Array oder der Vector soll ich nachher weitergeben werden zu verarbeitung (An eine Funktione die Daten dann ausgibt oder so). Jetzt wäre es cool wenn das Ganze sortiert gespeichert ist.

Also - Party1(Zeit,Datum;Eintritt), und ich irgendwie über den Namen auf die Daten kommen kann.

Ich hab auch schon einen ersten Lösungsansatz. Hier lese ich die Xml aus und erstellen einen Dynamischen Vectornamen. Aber irgendwie funktioniert es nicht so richtig. Es scheitern schon beim erstellen des Dynamischen Namen.

Hier mal der Code

PHP-Code:
package mando_classes.diagramm 
{

    
import flash.events.Event;
    
import flash.events.HTTPStatusEvent;
    
import flash.events.IOErrorEvent;
    
import flash.net.URLLoader;
    
import flash.net.URLRequest;

    public class 
XML_start extends BuildGraph
    
{
        private var 
xmlloader:URLLoader;
        private var 
url:URLRequest;
        private var 
xml:XML;
        private var 
xmlabsolut:String;
        

         
        public function 
XML_start(par_xml:String
        {
            
abfrage(par_xml)
        }
        
        private function 
abfrage(par_xml:String):void 
        
{    
            
xmlabsolut par_xml;
            
url= new URLRequest(xmlabsolut);
            
xmlloader = new URLLoader();
            
xmlloader.addEventListener(Event.COMPLETEparseXML);
            
xmlloader.addEventListener(IOErrorEvent.IO_ERRORioErrorFehler);
            
xmlloader.load(url);
            
        }
        
        private function 
parseXML(e:Event):void 
        
{
            
xml XML(xmlloader.data);
            
xml.ignoreWhite true;
            
save();
        }
        
        private function 
save():void
        
{
            
// Hier sollen verschiedene Variablen erstellt werden und später Daten in dem Dynamischen Vector gespeichert werden.
            
for (var i:int<= xml.Party.length(); i++)
            {
                
trace(String(xml.Party[i].attribute("Name")));
                
this[String(xml.Party[i].attribute("Name"))] = new Vector.<String>;
            }
        }
            
        
        private function 
ioErrorFehler(event:IOErrorEvent):void {
            
trace("Fehler");
        }
        
        
        
        
        
    }


und die Fehlermeldung
PHP-Code:
Test //Name bzw. Wert des Attributes
ReferenceErrorError #1056: Eigenschaft Test in mando_classes.diagramm.XML_start kann nicht erstellt werden.
    
at mando_classes.diagramm::XML_start/save()
    
at mando_classes.diagramm::XML_start/parseXML()
    
at flash.events::EventDispatcher/dispatchEventFunction()
    
at flash.events::EventDispatcher/dispatchEvent()
    
at flash.net::URLLoader/onComplete() 
Eigentlich bin ich mir relativ sicher, dass es so gehen muss.

Naja irgendwie bin ich mit der Lösung eh nicht ganz zufrieden, weil ich mir grade schwer vorstellen kann wie es nachher weiter geheh soll. Wie ich die Daten in den Vector bekomme ist klar. Aber des Ganze ist mir nachher irgendwie zu durcheinander. Wenn ich mehrere Partys habe, sammelt sich automatisch eine vielzahl von Daten an. Wie ich die nachher am besten Verarbeite und speichere ist mein Hauptsächliches Problem. Das hier war nur ein Lösungsansatz. Vllt könnt ihr mir helfen oder einen besseren Lösungsansatz zeigen. Wäre cool.

Vielen Danke und Grüße
Mando
Mando ist offline   Mit Zitat antworten
Alt 25-02-2011, 01:15   #2 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
du kannst in einer klasse nicht so einfach neue variablen erstellen, ist auch nicht zu empfehlen weil das ein heilloses durcheinander gibt wie du schon ahnst.

du kannst zb. mit einem assoziativen array arbeiten...

PHP-Code:
meinePartys[partyName] = [locationdateprice]; 
meinePartys ist eine klassenvariable vom typ array.

im oop sinne könnte man auch eine eigene klasse Party und diese party objekte in einem array oder vector speichern.
ING ist offline   Mit Zitat antworten
Alt 25-02-2011, 01:33   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
Zitat:
Zitat von ING Beitrag anzeigen
du kannst in einer klasse nicht so einfach neue variablen erstellen, ist auch nicht zu empfehlen weil das ein heilloses durcheinander gibt wie du schon ahnst.
jo...wusste aber nicht weiter...

Zitat:
Zitat von ING Beitrag anzeigen

im oop sinne könnte man auch eine eigene klasse Party und diese party objekte in einem array oder vector speichern.
daran hab ich auch schon gedacht...das wäre eigentlich die schönste Lösung...dann müsste ich diese Klasse aber irgendwie unterbringen...sie vererben oder so...und den Platz hab ich Planmässig schon vergeben...Mehrfachvererbung geht ja nicht....so dass ich ja die Daten darin speichere und später wieder drauf zugreifen kann..oder??
Mando ist offline   Mit Zitat antworten
Alt 25-02-2011, 02:05   #4 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
wieso sollte die klasse von irgendwas erben? wenn du nur daten drin speicherst ist es eine simple dokumentenklasse wo du die ganzen variablen wie ort, datum etc. unterbringst, mehr muss sie doch nicht können außer die daten gekapselt zur verfügung zu stellen, oder?

in der XML_start erstellst du dann einfach deine party objekte und legst sie im array oder vector ab.

ansonsten blick ich da in deiner struktur nicht mehr durch, XML_start (häää ) erbt von BuildGraph klingt schon ziemlich wild
ING ist offline   Mit Zitat antworten
Alt 25-02-2011, 11:17   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
Zitat:
Zitat von ING Beitrag anzeigen
wieso sollte die klasse von irgendwas erben? wenn du nur daten drin speicherst ist es eine simple dokumentenklasse wo du die ganzen variablen wie ort, datum etc. unterbringst, mehr muss sie doch nicht können außer die daten gekapselt zur verfügung zu stellen, oder?

in der XML_start erstellst du dann einfach deine party objekte und legst sie im array oder vector ab.

ansonsten blick ich da in deiner struktur nicht mehr durch, XML_start (häää ) erbt von BuildGraph klingt schon ziemlich wild
ja du hast recht vllt fang ich auch nochmal ganz von vorne an....ich hab aber gestern noch versucht mit einer eigenen Klasse namens Save...die Sachen dort zu speichern...


die Klasse Save...ich wollte ne eigene Klasse
Code:
package mando_classes.diagramm 
{
	import flash.display.Sprite;

	public class Save extends Sprite
	{
		
		private var nameas:String;
		private var zeit:int;
		
		public function Save(namepar:String, zeitpar:int) 
		{
			nameas = namepar;
			zeit = zeitpar;
		}
		
		
		private function lese():void
		{
			
			trace(name +" - "+zeit);
			
		}
	}

}
und in der XML_Start greif ich dan darauf zu (erstelle ein Objekt)..aber ich komme nicht auf die Funktion lese drauf...
Code:
		var test:Save = new Save(xml.Party[1].attribute("Name"), xml.Party[2].attribute("Name"));
			addChild(test);
test.lese();
so hattest des du doch gemeint...später kann ich die Objekte(Save) in einem Array speichern...


edit: bevor ich es vergessen....in BuildGraph ist nichts drinne...

Geändert von Mando (25-02-2011 um 12:44 Uhr)
Mando ist offline   Mit Zitat antworten
Alt 25-02-2011, 12:38   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Wenn nichts drin ist, muss davon auch nicht geerbt werden. Und warum soll Save von Sprite erben? Und warum das addChild()? Da ist doch keine Grafik drinne...

So war das gemeint (der kürzest mögliche Weg als Klasse):
ActionScript:
  1. package ...{
  2. public class Party
  3.     {
  4.         public var zeit:int;
  5.     }
  6. }
ActionScript:
  1. var parties:Object=new Object();
  2.  
  3. parties["cdu"]=new Party();
  4. parties["cdu"].zeit=12345;
  5.  
  6. trace(parties["cdu"].zeit);

Natürlich kannst du, wenn du willst, alle Werte im Konstruktor übergeben, musst aber nicht wenn du public vars in der Klasse anlegst.
joeydee ist offline   Mit Zitat antworten
Alt 25-02-2011, 12:49   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
Hmm...okay du erstellt jetzt zu erst ein Object mit dem Namen Parties...versteh ich nicht ganz...ist ja dann ein Array oder??

kann ich des nicht auch so machen?

Code:
     
    cdu_party:Party = new Party();
    cdu_party.zeit=12345;
     
    trace(cdu_party.zeit); 

//und später dass ganze in ein Vektor oder zu rein hauen..
meine Frage wäre jetzt noch wie komm ich auf die Funktionen drauf...in der Klasse Party??

zb. wie oben auf die Funktion lese();

Grüße und Danke für die schnelle Antwort

Geändert von Mando (25-02-2011 um 12:55 Uhr)
Mando ist offline   Mit Zitat antworten
Alt 25-02-2011, 13:48   #8 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
cdu_party.lese();

aber die lese-Funktion brauchst du ja nicht, da du die Eigenschaften ja direkt auslesen kannst. Generell bei Funktionen (sprich Klassenmethoden) geht das aber so.

Aber so wie ich verstanden hatte, willst du doch später die Parties dynamisch über den Namen referenzieren? Da brauchst du ein Assoziatives Array, sprich Object. Oder du musst eine Suche über den Vector laufen lassen. Object ist aber für solche Zugriffe besser optimiert.
joeydee ist offline   Mit Zitat antworten
Alt 25-02-2011, 13:53   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
Zitat:
Zitat von joeydee Beitrag anzeigen
cdu_party.lese();

aber die lese-Funktion brauchst du ja nicht, da du die Eigenschaften ja direkt auslesen kannst. Generell bei Funktionen (sprich Klassenmethoden) geht das aber so.

Aber so wie ich verstanden hatte, willst du doch später die Parties dynamisch über den Namen referenzieren? Da brauchst du ein Assoziatives Array, sprich Object. Oder du musst eine Suche über den Vector laufen lassen. Object ist aber für solche Zugriffe besser optimiert.


hmm...okay...aufjedefall hab ich jetzt einen Ansatz...das mit der Arrays brauch ich wahrscheinlich jetzt nicht mehr unbedingt...aber das mit der Klasse ist aufjedenfall ne schöne sache...
ich habe meine Objekte mit den verschiedenen Eigenschaften...des Object kann ich ja weitergeben wie ich will und auf dessen Eigenschaften zugreifen??



Vielen Dank
Mando ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
klasse, speichern, 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
xml daten speichern StayFrosty Flash CS3 Professional 1 15-05-2008 09:52
daten speichern??? ringo Flash MX 1 15-12-2006 15:00
Speichern von Daten in xml? Jakozk Flash Einsteiger 5 23-04-2006 21:35
Daten speichern! Globaltek Flash MX 2004 1 12-04-2005 10:49
Mit XML Daten Speichern !!! Do-X Flash mit XML und Webservices 3 25-02-2003 09:44


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

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


Copyright ©1999 – 2012 Marc Thiele