Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-02-2009, 19:43   #1 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 26
Question XML load Funktion Gültigkeitsbereich

Wollte eigentlich eine äußerst simple XML Datei einlesen, die Inhalte anwenden und fertig.
Dabei geht es darum Text mittels ein PPV3D perspektivisch zu verzerren.
Ohne XML d. h. mit swfObject und flashvars läuft alles einwandfrei.

Ich scheitere wahrscheinlich am Gültigsbereich.
Bekomme keine Variablen aus dem Load-Funktions-Bereich in Textfelder außerhalb. Globale Variablen sind deklariert.
Kann doch nicht sein. Weiß jemand wo der Fehler ist?
Zugegeben AS3 ist noch Neuland für mich ...


var firstname:String = new String();
var lastname:String = new String();

var xml:XML;
var xmlReq:URLRequest = new URLRequest ("user.xml");
var xmlLoader:URLLoader = new URLLoader();

function xmlLoaded(event:Event):void{
xml = new XML(event.target.data);
var fn:XMLList = xml.firstname.children();
var ln:XMLList = xml.lastname.children();

firstname = fn;
lastname = ln;
}
xmlLoader.load(xmlReq);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

trace(firstname) // gibt nix
trace(lastname) // gibt nix



XML:

<?xml version="1.0" encoding="UTF-8"?>
<user>
<firstname>Heinz</firstname>
<lastname>Horst</lastname>
</user>
flashhorst ist offline   Mit Zitat antworten
Alt 19-02-2009, 21:32   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ladebefehle funzen in Flash grundsätzlich asynchron, d.h., der Ladebefehl wird zwar abgesetzt, doch der Response steht natürlich nicht in der nächsten Millisekunde zur Verfügung. Auf den Response wartet ein Listener mit einer entsprechenden Funktion (oder in AS2 ein einfacher Funktions-Callback).

Das wiederum bedeutet, dass der Rest des Scripts ohne Stop weiter ausgeführt wird und Variablen, die sich auf den Response beziehen, noch nicht gefüllt sind. Sinnvoll ist also nur etwa das:
PHP-Code:

var xml:XML;
var 
xmlReq:URLRequest = new URLRequest ("user.xml");
var 
xmlLoader:URLLoader = new URLLoader();

xmlLoader.load(xmlReq);
xmlLoader.addEventListener(Event.COMPLETExmlLoaded);

function 
xmlLoaded(event:Event):void{
   
xml = new XML(event.target.data);
   var 
fn:XMLList xml.firstname.children();
   var 
ln:XMLList xml.lastname.children();

  
   
trace("fn="+fn
   
trace("ln="+ln

  Mit Zitat antworten
Alt 19-02-2009, 21:52   #3 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 26
Das wiederum bedeutet, dass der Rest des Scripts ohne Stop weiter ausgeführt wird und Variablen, die sich auf den Response beziehen, noch nicht gefüllt sind.

... verstanden. Wie bekomme ich den Variablen des Response in den Rest des Scripts? Weitere Listener? Script unterbrechen bzw. warten lassen? Oder alles in den Response?


beste Grüße.
flashhorst ist offline   Mit Zitat antworten
Alt 19-02-2009, 21:56   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Entweder wie gezeigt in den Response oder in eine Funktion, die nach dem Response gestartet wird.
  Mit Zitat antworten
Alt 19-02-2009, 22:03   #5 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 26
Hi Holger,

danke für's erhellen. Hilft.

Schöne Grüße,

K.
flashhorst ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
funktionen, gültigkeitsbereiche as 3, 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



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