Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-01-2005, 01:01   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 67
Komische Reihenfolge von Frames ?

Hi Community,
ich gebe zu ich bin ein nOOb und mir fehlt scheinbar noch ein ein bisschen Grundlagenwissen. Aber "learning by doing".

Zu meinem Problem erstmal den Quellcode, ist nicht so viel keine Sorge.

Frame 1
PHP-Code:
XMLfile = new XML();
XMLfile.ignoreWhite true;
XMLfile.load("http://localhost/flash/test.xml");

XMLfile.onLoad = function(success) {
    if (
success) {
        
buildXML(XMLfile.childNodes[0]);
    }
};

function 
buildXML(newXML) {
    
ebene1 = [];
    
ebene2 = [];
    
ebene3 = [];
    while (
newXML != undefined) {
        
ebene1[newXML.attributes.id] = newXML.attributes.name;
        
trace("Ebene1: "+ebene1[newXML.attributes.id]);
        
chield1XML newXML.childNodes[0];
        while (
chield1XML != undefined) {
            
ebene2[chield1XML.attributes.id] = chield1XML.attributes.name;
            
trace("Ebene2: "+ebene2[chield1XML.attributes.id]);
            
chield2XML chield1XML.childNodes[0];
            while (
chield2XML != undefined) {
                
ebene3[chield2XML.attributes.id] = chield2XML.attributes.name;
                
trace("Ebene3: "+ebene3[chield2XML.attributes.id]);
                
chield2XML chield2XML.nextSibling;
            }
            
chield1XML chield1XML.nextSibling;
        }
        
newXML newXML.nextSibling;
    }
    
delete newXMLchiel1dXMLchield2XML;

Frame 2
PHP-Code:
trace(ebene1[0]);
stop(); 
Nun wenn ich das Script ausgebe, gibt er mir als erstes den trace von Frame2 aus, da dort aber die Datei noch nicht eingeladen wurde, kommt dort undefinied. Anschließend gibt er mir die traces von Frame 1 aus.

Wir kann ich das beeinflussen, bzw. zum lernen "Wieso tut er das ?"

Natürlich bin ich auch für weitere Tipps zur Verbesserung des Codes offen.

MfG
Primusio
Primusio ist offline   Mit Zitat antworten
Alt 31-01-2005, 13:27   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
zw. zum lernen "Wieso tut er das ?"
Weil du keinen stop() in Frame 1 gesetzt hast...
  Mit Zitat antworten
Alt 31-01-2005, 15:51   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 67
Danke für die Antwort, jetzt habe ich stop(); am Ende von Frame 1 hinzugefügt.
Nun kommt er aber gar nicht mehr zu Frame 2.

Muss ich jetzt angeben, dass er dahin springen soll ?
Ist es nicht logisch, wenn er die Frames einen nach den anderen abarbeitet ?
Primusio ist offline   Mit Zitat antworten
Alt 31-01-2005, 21:33   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Muss ich jetzt angeben, dass er dahin springen soll ?
Wäre besser... z.B. gotoAndStop(2) o.ä.



Zitat:
Ist es nicht logisch, wenn er die Frames einen nach den anderen abarbeitet ?
Eigentlich schon, kommt aber immer noch auf die Scripte an. Manche Befehle werden eben asynchron abgearbeitet, d.h. Flash wartet nicht auf Rückmeldungen o.ä. sondern arbeitet sofort weiter das Script ab.

Und mit Sprungbefehlen kann man das ganz umgehen...
  Mit Zitat antworten
Alt 02-02-2005, 12:12   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 67
Nochmals danke für die Antwort und diese kleine Lektion aber trotz alledem geht es nicht.

Ich habe im 2. Frame ein stop(); eingefügt un dim ersten ein gotoAndPlay(2);
aber trotzdem kommt beim ausführen als ERSTER trace der im 2. Frame und der ist dadurch undefinied.

Ich drehe hier bald durch, da ich keine Logik mehr erkenne.
Primusio ist offline   Mit Zitat antworten
Alt 02-02-2005, 14:13   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du darfst in diesem Fall deinen gotoAndPlay(2) nicht an das Ende des Scriptes in Frame 1 setzen, weil zu diesem Zeitpunkt das XML-File noch nicht nachgeladen und ausgewertet ist. Flash arbeitet bei fscommands und Nachladen von Daten asynchron, d.h. die Befehle werden zwar gestartet, aber es wird nicht gewartet, bis Rückmeldungen kommen, sondern das Script wird gleich weiter abgearbeitet.

Deshalb gibt es ja auch die Callback-Methoden wie z.B. onLoad, denn in diesen Funktionen geht es im Script eigentlich erst weiter. Nur in einer Callback-Funktion kann man sicher sein, dass das Nachladen funktioniert (oder auch nicht) hat.

Du solltest deshalb deinen Sprungbefehl in die onLoad-Funktion hinter den Aufruf der "buildXML"-Funktion legen.
  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 18:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele