Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-02-2009, 10:19   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
problem: XML objektorientiert laden

hallo zusammen!
hab mich grade eben erst registriert, und hab auch gleich mal nen problem

und zwar versuch ich mir ne klasse zu erstellen, die ein xml lädt um damit einen blog zu erstellen. prinzipiell will ich aber erstmal hinbekommen dass die klasse überhaupt mein xml lädt.

PHP-Code:
package anatol.ui
{
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    public class 
NewsList extends MovieClip
    
{
        private var 
loader:URLLoader;
        public function 
NewsList(url:String):void
        
{
            
loader = new URLLoader();
            
loader.load(new URLRequest(url));
            
loader.addEventListener(Event.COMPLETEonLoaded);
        }
        private function 
onLoaded(e:Event):void
        
{
            
trace(e.target.data);
        }
    }

in meinem swf hab ich dann einen aufruf:

PHP-Code:
import anatol.ui.NewsList;
var 
link:String "http://www.tagesschau.de/newsticker.rdf";
NewsList(link); 
bin erst seit kurzem dran as3 zu lernen, daher seh ich nicht, warum das nicht funktionieren sollte. flash hat dazu folgendes zu sagen:

Zitat:
TypeError: Error #1034: Typumwandlung fehlgeschlagen: "http://www.tagesschau.de/newsticker.rdf" kann nicht in anatol.ui.NewsList umgewandelt werden.
at test_fla::MainTimeline/frame1()
in der as3 referenz steht dazu nur:

Zitat:
1034 Variables cannot be native.
heißt das dass ich meinen string der die url enthält innerhalb der klasse angeben muss?

aus den andren beiträgen zum thema error 1034 bin ich leider nicht schlauer geworden was mein problem angeht

grüße und schonmal vielen dank fürs durchlesen
Arudo ist offline   Mit Zitat antworten
Alt 19-02-2009, 10:54   #2 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
schau mal hier:
http://labs.vizar.de/blog/2008-07-10...only-pure-as3/
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 19-02-2009, 11:22   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
danke für die antwort!

hab meinen code mal angepasst:

PHP-Code:
package anatol.ui
{
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    public class 
NewsList extends MovieClip
    
{
        private var 
loader:URLLoader;
        public var 
myXml:XML;
        public function 
NewsList(url:String):void
        
{
            
loader = new URLLoader();
            
loader.load(new URLRequest(url));
            
loader.addEventListener(Event.COMPLETEonLoaded);
        }
        private function 
onLoaded(e:Event):void
        
{
            try {
                
myXml=new XML();
                
myXml e.target.data;
                
trace(e.target.data);
            } catch (
error:TypeError) {
                
trace(error.message);
            }
        }
    }

und:

PHP-Code:
import anatol.ui.NewsList;
NewsList("http://www.tagesschau.de/newsticker.rdf");
trace(NewsList.myXml); 
wenn ich die letzte zeile ( trace(NewsList.myXml); ) auskommentiere nach wie vor fehler 1034, also keine neuen erkenntnisse.
mit der letzten zeile kommt

Zitat:
1119: Access of possibly undefined property myXml through a reference with static type Class.
aber ich glaube dass ich ohnehin nur die variable innerhalb der klasse falsch anspreche...
selbes problem: meine klasse will den string mit der url den ich ihr schicken will nicht annehmen. nur warum?
Arudo ist offline   Mit Zitat antworten
Alt 19-02-2009, 12:02   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Klar, du versuchst direkt auf deine Klasse zuzugreifen, statt auf eine Instanz davon. Das geht nur mit static-Membern der Klasse.

Ersetze
ActionScript:
  1. import anatol.ui.NewsList;
  2. NewsList("http://www.tagesschau.de/newsticker.rdf");
  3. trace(NewsList.myXml);

durch
ActionScript:
  1. import anatol.ui.NewsList;
  2. var myNewsList:NewsList=new NewsList("http://www.tagesschau.de/newsticker.rdf");
  3. trace(NmyNewsList.myXml);
joeydee ist offline   Mit Zitat antworten
Alt 19-02-2009, 12:33   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
das hat funktioniert, die NewsList() nimmt jetzt den string an, danke!
wieder was gelernt

nur dass mir mein trace jetzt immer noch nicht die xml ausgibt, sondern null.
ich schätze mal die variable ist zu dem zeitpunkt wo ich sie auslesen will noch nicht initialisiert. wie bekomm ich das script also dazu auch wirklich was auszugeben?
Arudo ist offline   Mit Zitat antworten
Alt 19-02-2009, 12:55   #6 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
Zitat:
Zitat von Arudo Beitrag anzeigen
das hat funktioniert, die NewsList() nimmt jetzt den string an, danke!
wieder was gelernt

nur dass mir mein trace jetzt immer noch nicht die xml ausgibt, sondern null.
ich schätze mal die variable ist zu dem zeitpunkt wo ich sie auslesen will noch nicht initialisiert. wie bekomm ich das script also dazu auch wirklich was auszugeben?
indem du dann ein Event dispatched
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 19-02-2009, 15:37   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
so?

PHP-Code:
package anatol.ui
{
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    public class 
NewsList extends MovieClip
    
{
        private var 
loader:URLLoader;
        public var 
myXml:XML;
        public function 
NewsList(url:String):void
        
{
            
loader = new URLLoader();
            
loader.load(new URLRequest(url));
            
loader.addEventListener(Event.COMPLETEonLoaded);
        }
        private function 
onLoaded(e:Event):void
        
{
            
myXml=new XML();
            
myXml e.target.data;
            
dispatchEvent(new Event(Event.COMPLETE));
        }
        public function 
returnXML():XML{
            return 
myXml;
        }
    }

und:

PHP-Code:
import anatol.ui.NewsList;
var 
myNewsList:NewsList = new NewsList("http://www.tagesschau.de/newsticker.rdf");
myNewsList.addEventListener(Event.COMPLETEtraceOut);
function 
traceOut(e:Event):void
{
    
trace(e.target.myXml);

hab das ganze mal durch den debugger geschickt, zeile 19 ( myXml = e.target.data; ) kann das programm die daten nicht in xml umwandeln, passiert unabhängig davon welche xml ich laden möchte
Arudo ist offline   Mit Zitat antworten
Alt 19-02-2009, 15:44   #8 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
Zitat:
Zitat von Arudo Beitrag anzeigen
so?

PHP-Code:
package anatol.ui
{
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    public class 
NewsList extends MovieClip
    
{
        private var 
loader:URLLoader;
        public var 
myXml:XML;
        public function 
NewsList(url:String):void
        
{
            
loader = new URLLoader();
            
loader.load(new URLRequest(url));
            
loader.addEventListener(Event.COMPLETEonLoaded);
        }
        private function 
onLoaded(e:Event):void
        
{
            
myXml=new XML();
            
myXml e.target.data;
            
dispatchEvent(new Event(Event.COMPLETE));
        }
        public function 
returnXML():XML{
            return 
myXml;
        }
    }

und:

PHP-Code:
import anatol.ui.NewsList;
var 
myNewsList:NewsList = new NewsList("http://www.tagesschau.de/newsticker.rdf");
myNewsList.addEventListener(Event.COMPLETEtraceOut);
function 
traceOut(e:Event):void
{
    
trace(e.target.myXml);

hab das ganze mal durch den debugger geschickt, zeile 19 ( myXml = e.target.data; ) kann das programm die daten nicht in xml umwandeln, passiert unabhängig davon welche xml ich laden möchte
vielleicht ist es eine XMLList - ich würde aber einen eigenene Event definieren
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 20-02-2009, 10:03   #9 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
XMLList hab ich auch schon versucht, ergibt den selben fehler

PHP-Code:
var xmlList:XMLList = new XMLList;
xmlList e.target.data;
//funktioniert auch nicht 
Zitat:
TypeError: Error #1034: Typumwandlung fehlgeschlagen: "<hier kommt das das Xml als text>" kann nicht in XMLList umgewandelt werden.
hab mal versucht das ganze zunächst mal auf der Timeline zum Laufen zu bringen:

PHP-Code:
var loader:URLLoader=new URLLoader();
var 
xml:XML = new XML;
var 
xmlList:XMLList = new XMLList;


loader.addEventListener(Event.COMPLETEloaderInit);
function 
loaderInit(e:Event):void
{
    
xml = (e.target.data);
    
xmlList xml.descendants();
    
trace(xmlList);
    
}

loader.load(new URLRequest("Aktuelles.xml")); 
das ergibt wieder den selben fehler, dass die daten aus e.target.data nicht in der xml-variablen abgelegt werden können.

trace(e.target.data) an der stelle gibt mir das komplette xml aus, halt als string...
gibt es irgendeine methode die Text in Xml umwandelt?
Arudo ist offline   Mit Zitat antworten
Alt 20-02-2009, 10:13   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
schonmal das versucht: myXml=new XML(e.target.data);
joeydee ist offline   Mit Zitat antworten
Alt 20-02-2009, 10:25   #11 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
Zitat:
Zitat von Arudo Beitrag anzeigen
gibt es irgendeine methode die Text in Xml umwandelt?
habs gefunden bescheuert genug
das geht nicht:

PHP-Code:
var xml:XML = new XML;
xml irgendeinString
das schon:

PHP-Code:
var xml:XML;
xml = new XML(irgendeinString); 
hier meine klasse, jetzt endlich funktionsfähig

PHP-Code:
package anatol.ui
{
    
//imports
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    
    
//class constructor
    
public class NewsList extends MovieClip
    
{
        private var 
loader:URLLoader
        private var 
myXml:XML;
        public var 
myXMLList:XMLList
        
        
//load xml, path passed in with "url"
        
public function NewsList(url:String):void 
        
{
            
loader = new URLLoader();
            
loader.load(new URLRequest(url));
            
loader.addEventListener(Event.COMPLETEonLoaded);
        }
        
        
//parses xml, fires event in order to be able to load xml data as XMLList as soon as downloaded and parsed
        
private function onLoaded(e:Event):void
        
{
            
myXml = new XML(e.target.data);
            
myXMLList myXml.*;
            
dispatchEvent(new Event(Event.COMPLETE));
        }
        public function 
returnXML():XMLList
        
{
            return 
myXMLList;
        }
    }

nochmal danke für die Hilfe!
Arudo ist offline   Mit Zitat antworten
Alt 20-02-2009, 10:26   #12 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 12
Zitat:
Zitat von joeydee Beitrag anzeigen
schonmal das versucht: myXml=new XML(e.target.data);
genau das wars! bin eben auch drauf gekommen
Danke schön
Arudo 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 16:33 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele