Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-07-2007, 17:31   #1 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Question XML Schleife läuft zu schnell durch

Folgendes Script:

PHP-Code:
_root.createEmptyMovieClip("container_mc"1);//container erstellen
//XML-DATEN VERARBEITEN--------------------------------------------------------
var XMLdaten = new XML();//Variable erstellen
XMLdaten.ignoreWhite true;//Leerzeichen in XML-Liste ignorieren
XMLdaten.load("test.xml");//Pfad zu XML-Liste
XMLdaten.onLoad = function(success) {
    if (
success) {
        var 
anzahl:Number XMLdaten.firstChild.childNodes.length;//Anzahl der Elemente herausfinden 
        
var titel:Array = [];//Array für Titel
        
for (var 0i<anzahli++) {
            
titel[i] = XMLdaten.firstChild.childNodes[i].attributes.titel;//auslesen 
            
_root.container_mc.loadMovie(titel[i]+".swf");//container beladen
            
_root.onEnterFrame = function() {
                if (
_root.container_mc.getBytesLoaded()>=_root.container_mc.getBytesTotal() && _root.container_mc.getBytesLoaded()>12 && _root.container_mc._currentframe == _root.container_mc._totalframes) {
                    
delete this.onEnterFrame;
                    
_root.container_mc.unloadMovie();
                }
            };
        }
    }
}; 
Und die XML-Liste:

PHP-Code:
<?xml version='1.0' encoding='utf-8'?>
    <swf>
        <swffile titel="test1"/>
        <swffile titel="test2"/>
        <swffile titel="test3"/>
    </swf>
Die For-Schleife läuft so schnell durch, dass er gleich die dritte SWF abspielt. Er soll aber die erste SWF (test1.swf) abspielen. Wie kann ich es realisieren, dass die Schleife nicht gleich den dritten Wert ausgibt, sondern zuerst den ersten?

Lg Philip
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 20-07-2007, 21:26   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.140
In der for-Schleife ist sowas schlecht. Im Optimalfall wird ein Event gefeuert im letzten Frame des geladenen MovieClips.

Sonst eine Funktion bauen, die abfragt ob das letzte Frame geladen ist (setInterval(), onEnterFrame-Event). Ist der letzte Frame erreicht, neuen MovieClip laden.
Omega Psi ist offline   Mit Zitat antworten
Alt 21-07-2007, 08:54   #3 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Okay, Aber die For-Schleife brauche ich doch trotzdem, um alle "Titel" aus der XML-Liste auszulesen oder gibt es da auch noch eine einfachere Möglichkeit?

lg Philip
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi ist offline   Mit Zitat antworten
Alt 21-07-2007, 11:09   #4 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Weiha, was'n Salat bei Dir

Grundsätzlich: für das Auslesen und Verarbeiten der XML solltest Du Dir immer
eine separate Funktion schreiben, die Du im onLoad-Event dann nur aufrufst.
Stichwort Übersichtlichkeit:

ActionScript:
  1. function XMLNodesIntoArrays():Void {
  2. var anzahl:Number = _root.XMLdaten.firstChild.childNodes.length;
  3. var _root.titel:Array = [];
  4. for (var i = 0; i<anzahl; i++) {
  5. _root.titel[i] = _root.XMLdaten.firstChild.childNodes[i].attributes.titel;//auslesen 
  6. }
  7. }
  8. //
  9. //
  10. //
  11. XMLdaten.onLoad = function(success) {
  12. if (success) {
  13. XMLNodesIntoArrays();
  14. }
  15. }

Das Laden in einen Container per For-Schleife mit OnEnterFrame klappt so
nicht, weil sich sonst die einzelnen onEnterFrames überschreiben, bis das
letzte Element erreicht wurde - weswegen Du auch immer nur die 3te
swf zu Gesicht bekommst.

Also entweder über Button-Events laden oder mal genauer erklären, warum
Du drei Filme gleichzeitig laden willst ...

Geändert von ~pyropete~ (21-07-2007 um 11:16 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 21-07-2007, 11:19   #5 (permalink)
Ohne Worte
 
Benutzerbild von Masterpi
 
Registriert seit: Jul 2004
Ort: Berlin
Beiträge: 472
Danke erstmal (:

Also natürlich möchte ich die drei SWF-Dateien nicht gleichzeit laden^^
Mein Ziel ist es, dass die erste SWF abspielt, nachdem das letzte Frame erreicht ist, soll Nummer 2 abgespielt werden, danach Nummer 3 usw. Wenn alle Swf Dateien ein Mal durchgelaufen sind -> wieder von vorne anfangen. Nur, hatte ich eben das Problem, dass er nicht mal bei der ersten Datei beginnt. Wenn ich das Problem gelöst habe, beginne ich mich daran zu setzen, mein eigentliches Ziel zu erreichen, also das alle Dateien nacheinander abgespielt werden (wenn ich es denn schaffe ).

lg Philip
__________________
Wie kommt mein Öl unter deinen Boden?
Masterpi 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 14:03 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele