tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
523
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Doni2007 Doni2007 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    10
    Hallo zusammen, ich versuche seit einiger Zeit vergeblich ein Array das ich mit dem Inhalt aus einer XML Datei gefüllt habe weiter zu verarbeiten (für eine Slideshow).

    Ich bekomme aber immer nur undefined angezeigt wenn ich auf den Wert des Array ausserhalb der onLoad funktion zugreifen möchte. Ich würde es aber gerne ausserhalb dieser Funktion weiterverarbeiten können.

    Bsp.:


    myxml = new XML();
    myxml.ignoreWhite = true;
    myxml.onLoad = function(success) {
    if(success) {
    for (var i=0; i<myxml.firstChild.childNodes.length; i++) { images[i] = this.firstChild.childNodes[i].firstChild.firstChild;
    }

    } else {trace("Fehler beim Laden der XML datei")} }
    myxml.load("bilder.xml");

    //Hier sollte dann die Weiterverarbeitung beginnen:
    // Beispielsweise trace(images[i]);

    für Tipps oder Anregungen wäre ich sehr dankbar !!
     

  2. #2
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi und willkommen im Forum,

    die Weiterverarbeitung muss aus der onLoad-Funktion angestoßen werden.

    Grund: ActionScript-Code wird Zeile für Zeile abgearbeitet, wobei nicht auf das Laden irgendwelcher Daten gewartet wird. An der Stelle, wo Du die Weiterverarbeitung vornehmen willst (auf der Zeitleiste unterhalb der onLoad-Methode), ist die Datei höchstwahrscheinlich noch nicht geladen.

    So müsste es korrekt aussehen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    myxml = new XML();
     
    myxml.ignoreWhite = true;
     
    myxml.onLoad = function(success) {
      if(success) {
        for (var i=0; i<myxml.firstChild.childNodes.length; i++) {
          images[i] = this.firstChild.childNodes[i].firstChild.firstChild;
        }
        [B]weiterverarbeiten[/B]();
      } else {
        trace("Fehler beim Laden der XML datei")
      }
    }
     
    myxml.load("bilder.xml");
     
    function [B]weiterverarbeiten[/B]() {
      for (var i in images) {
        trace(images[i]);
    }

    Gruß
    .
     

  3. #3
    Doni2007 Doni2007 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    10
    Super !! genau das wars, Danke endlich kann ich es weiterverarbeiten
     

  4. #4
    Doni2007 Doni2007 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    10
    jetzt habe ich leider ein weiterführendes Problem mit loadClip, und zwar wenn ich ich direkt mit var images = new Array("bild1","bild2" ...usw. arbeite funktioniert die loadClip Funktion einwandfrei, aber wenn ich wie zuvor schon angefragt das Array aus einer XML Datei erstelle und damit weiterarbeiten möchte klappt das nicht. Wieso

    Bsp::

    //var images = new Array("bild1.jpg", "bild2.jpg", "bild3.jpg", "bild4.jpg", "bild5.jpg")
    var images:Array = new Array();
    var img:Array = new Array();
    var mcl = new MovieClipLoader(); // MovieClipLoader um die Bilder zu laden

    myxml = new XML();
    myxml.ignoreWhite = true;
    myxml.onLoad = function(success) {
    if(success) {
    for (var i=0; i<myxml.firstChild.childNodes.length; i++) {
    images[i] = this.firstChild.childNodes[i].firstChild.firstChild;
    }
    weiterverarbeiten();
    } else {
    trace("Fehler beim Laden der XML datei")
    }
    }

    myxml.load("bilder.xml");

    function weiterverarbeiten() {

    mcl.onLoadInit = function() { // wird aufgerufen, wenn ein Bild geladen wurde
    trace("ok. hat geklappt");
    }
    trace(images.length);
    for (var i=0; i<images.length; i++) {
    img[i] = this.createEmptyMovieClip("img" + i, i); // Für jedes Bild einen MC erstellen
    var ct = img[i].createEmptyMovieClip("ct", 1); // ... und dort einen weiteren leeren MC hineinpacken
    //img[i]._visible = false; // Bild erstmal ausblenden
    mcl.loadClip(images[i], ct); // Bilddatei vom MovieClipLoader in den Container laden lassen
    }

    }


    könnte mir da noch jemand weiterhelfen
     

  5. #5
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    bitte rücke Deinen Code ein und formatier ihn mit CODE-Tags. So kann man das ja kaum lesen.

    Dein Problem habe ich nicht ganz verstanden - poste am besten mal Deine .fla und die XML-Datei als Anhang.

    Gruß
    .
     

  6. #6
    Doni2007 Doni2007 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    10
    Nun habe ich mal beide Dateien angehangen,

    also wenn ich die obere (auskommentierte Zeile) direkt verwende var images = new Array("bild1.jpg"...) dann funktioniert alles einwandfrei (habe den unteren Slideshow Teil übrigens hier von diesem Forum),

    aber wenn ich versuche den Inhalt für das Array images aus einer XML Datei auszulesen und zu füllen, klappt die weitere Verarbeitung nicht mehr.

    in der Hoffnung auf eine Lösung

    gruß

    Doni2007
    Angehängte Dateien Angehängte Dateien
     

  7. #7
    Doni2007 Doni2007 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    10
    Ich habe hier nochmal das Script besser formatiert eingefügt,
    also wenn ich das array mittels XML erzeuge funktioniert die Bildausgabe nicht !
    aber wenn ich aber die obere Zeile entkommentiere und dafür die:
    images[i] = this.firstChild.childNodes[i].firstChild.firstChild; auskommentiere funktioniert es, wieso ?

    PHP-Code:
    //var images = new Array("bild1.jpg", "bild2.jpg", "bild3.jpg", "bild4.jpg", "bild5.jpg", "bild6.jpg", "bild7.jpg", "bild8.jpg", "bild9.jpg", "bild10.jpg", "bild11.jpg", "bild12.jpg", "bild13.jpg", "bild14.jpg"); // Array mit den Bildpfaden
    var images:Array = new Array();
    var 
    img:Array = new Array(); 
    var 
    mcl = new MovieClipLoader(); 

    myxml = new XML();
    myxml.ignoreWhite true;
    myxml.onLoad = function(success) {
      if(
    success) {
          
        for (var 
    i=0i<myxml.firstChild.childNodes.lengthi++) {
               
    images[i] = this.firstChild.childNodes[i].firstChild.firstChild;
        }
        
        
    weiterverarbeiten();
            
          } else {
            
    trace("Fehler beim Laden der XML datei")
      }
    }

    myxml.load("bilder.xml");

    function 
    weiterverarbeiten() {
        
        
    this.createEmptyMovieClip("bild_mc",this.getNextHighestDepth());
        
    trace(images[0]); // trace gibt bild1.jpg aus
        //mcl.loadClip(images[0], bild_mc);    //funktioniert nicht
        
    mcl.loadClip("bild1.jpg"bild_mc);  //funktioniert


    Inhalt der bilder.xml Datei:


    <?xml version="1.0" ?>
    <bilder>
    <bild>
    <bildname>bild1.jpg</bildname>
    <bildbeschreibung>bla bla<bildbeschreibung>
    </bild>
    <bild>
    <bildname>bild2.jpg</bildname>
    <bildbeschreibung>bla bla</bildbeschreibung>
    </bild>

    usw.
    .........
    </bilder>

    bin für jede Hilfe dankbar !
     

  8. #8
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    ich hatte bislang leider noch keine Zeit, mir die Datei anzusehen, aber probier mal:
    Code :
    1
    
    images[i] = this.firstChild.childNodes[i].firstChild.firstChild.[B]nodeValue[/B],
    oder
    Code :
    1
    
    images[i] = this.firstChild.childNodes[i].firstChild.firstChild.[B]toString()[/B];

    Grund: das Objekt "firstChild" ist vom Typ XMLNode, der MovieClipLoader erwartet aber einen String.

    Gruß
    .
     

  9. #9
    Doni2007 Doni2007 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    10
    Eigene Dummheit, Problem hat sich erledigt, hab den dummen Fehler gefunden,
    habe die XML Knoten falsch ausgelesen.

    Lösung:
    this.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue;
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 22.02.10, 12:05
  2. Ausgelesenes Bild an Bühnengröße anpassen
    Von Webflasher im Forum Flash Plattform
    Antworten: 11
    Letzter Beitrag: 25.11.09, 14:08
  3. AS3: MovieClip im Array; referenzieren und weiterverarbeiten
    Von hugo1981 im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 19.11.08, 13:50
  4. Antworten: 7
    Letzter Beitrag: 14.09.07, 17:33
  5. Ausgelesenes Datum ändern
    Von starfoxfs im Forum PHP
    Antworten: 4
    Letzter Beitrag: 31.08.04, 13:55