Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-12-2005, 18:30   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 19
XML Daten in Arrays speichern

Hi,

ich möchte aus dem folgenden XML File die Daten speichern:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fotoalbum SYSTEM "fotoalbum.dtd">
<fotoalbum name="Hochzeit" seiten="2">
<seite nr="1" layout="Hochzeit.jpg" bilder="2">
<bild dateiname="dsc001.jpg" breite="480" hoehe="360" posx="10" posy="10" dateityp="jpg"/>
<bild dateiname="dsc002.jpg" breite="480" hoehe="360" posx="50" posy="380" dateityp="jpg"/>
</seite>
<seite nr="2" layout="Hochzeit1.jpg" bilder="2">
<bild dateiname="dsc003.jpg" breite="360" hoehe="480" posx="10" posy="10" dateityp="jpg"/>
<bild dateiname="dsc004.jpg" breite="360" hoehe="480" posx="380" posy="200" dateityp="jpg"/>
</seite>
</fotoalbum>

Und zwar soll am Schluss ein Array entstehen, in dem alle Seiten mit ihren Bildern als MovieClips einzeln gespeichert sind.

Dazu habe ich folgendes Script geschrieben, das aber leider nicht ganz funktioniert!


var fotoalbum :XML = new XML();
fotoalbum.onLoad = geladen;
fotoalbum.ignoreWhite = true;
fotoalbum.load("fotoalbum.xml");

var anzahlSeiten : Number = 0;
var anzahlBilder :Array = [];
var namen :Array = [];
var pos_x :Array = [];
var pos_y :Array = [];
var backg :Array = [];

function geladen(success) :Void {
anzahlSeiten = this.firstChild.childNodes.length;

if (success) {

for (var i :Number = 0; i < anzahlSeiten; i++) {
anzahlBilder[i] = this.firstChild.childNodes[i].childNodes.length;
namen[i] = [];
backg[i] = fotoalbum.firstChild.childNodes[i].attributes.layout;
for (var j :Number = 0; j < anzahlBilder[i]; j++) {
namen[i][j] = this.firstChild.childNodes[i].childNodes[j].attributes.dateiname;
pos_x[i][j] = this.firstChild.childNodes[i].childNodes[j].attributes.posx;
pos_y[i][j] = this.firstChild.childNodes[i].childNodes[j].attributes.posy;
}
}
}
else {
trace ("Fehler beim laden des XML-Files");
}

var mcArray :Array = [];

for (var i :Number = 0; i < anzahlSeiten; i++) {
var mcPage :MovieClip = new MovieClip();
mcArray[i] = mcPage.createEmptyMovieClip("page" + i, 1);
var layout :String = backg[i];
trace (layout);
mcPage.loadMovie(backg[i]);
var mcPict :MovieClip = null;
var xVar :Number =0;
var yVar :Number = 0;
//wird gar nicht mehr aufgerufen, weiß aber nicht warum
for (var j :Number = 0; j < anzahlBilder; j++) {
trace ("for2");
trace (namen[i][j]);
mcPage = createEmptyMovieClip(mcPict, this.getNextHighestDepth());
mcPict.loadMovie(namen[i][j]);
mcPict._x = pos_x[i][j];
mcPict._y = pos_y[i][j];
}
}
}


Sitz jetzt schon ziemlich lange daran aber ich weiß nicht wo der Fehler liegt!
Die 4. for-Schleife wird gar nicht mehr ausgeführt obwohl ich nicht weiß warum!

Wäre sehr dankbar für Hilfe!!!!
Hab erst angefangen ActionScript zu programmiern!

mfg
Gery
mtd04043 ist offline   Mit Zitat antworten
Alt 08-12-2005, 19:04   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
puhh, schließ den Code mal mit [ PHP ] und [/ PHP ] ein (ohne Leerzeichen), dann kann man ihn auch lesen.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 08-12-2005, 19:23   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 19
PHP-Code:
var fotoalbum :XML = new XML();
fotoalbum.onLoad geladen;
fotoalbum.ignoreWhite true
fotoalbum.load("fotoalbum.xml");

var 
anzahlSeiten Number 0;
var 
anzahlBilder :Array = [];
var 
namen :Array = [];
var 
pos_x :Array = [];
var 
pos_y :Array = [];
var 
backg :Array = [];
            
function 
geladen(success) :Void {
    
anzahlSeiten this.firstChild.childNodes.length;

    if (
success)    {
        
        for (var 
:Number 0anzahlSeiteni++)    {
            
anzahlBilder[i] = this.firstChild.childNodes[i].childNodes.length;
            
namen[i] = [];
            
backg[i] = fotoalbum.firstChild.childNodes[i].attributes.layout;
            for (var 
:Number 0anzahlBilder[i]; j++)    {
                
namen[i][j] = this.firstChild.childNodes[i].childNodes[j].attributes.dateiname;
                
pos_x[i][j] = this.firstChild.childNodes[i].childNodes[j].attributes.posx;
                
pos_y[i][j] = this.firstChild.childNodes[i].childNodes[j].attributes.posy;
            }
        }
    }
    else    {
        
trace ("Fehler beim laden des XML-Files");
    }

    var 
mcArray :Array = [];
    
    for (var 
:Number 0anzahlSeiteni++)    {
        var 
mcPage :MovieClip = new MovieClip();
        
mcArray[i] = mcPage.createEmptyMovieClip("page" i1);
        var 
layout :String backg[i];
        
trace (layout);
        
mcPage.loadMovie(backg[i]);
        var 
mcPict :MovieClip null;
        var 
xVar :Number =0;
        var 
yVar :Number 0;
        for (var 
:Number 0anzahlBilderj++)    {
            
trace ("for2");
            
trace (namen[i][j]);
            
mcPage createEmptyMovieClip(mcPictthis.getNextHighestDepth());
            
mcPict.loadMovie(namen[i][j]);
            
mcPict._x pos_x[i][j];
            
mcPict._y pos_y[i][j];
        }
    }

mtd04043 ist offline   Mit Zitat antworten
Alt 08-12-2005, 21:41   #4 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
ohje ...
folgende bitte auch an dich:
konkretisiere dein problem und fasse es zusammen.
wenn du mal auf den punkt bringst, wo dein problem liegt, kann man sich der sache auch besser annehmen.

gehe doch selbst erstmal schritt für schritt durch und erkenne, was klappt und was nicht klappt.
teste eins nach dem anderen und wenn es dann hakt und du nicht weiter weißt, dann kannst du viel konkreter fragen.
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 08-12-2005, 21:58   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 19
Folgende Probleme:

in der 2. for-Schleife wird für die festgelegten werte immer undefined ausgegeben.

in der 3. for-Schleife funktioniert es nicht,
PHP-Code:
mcPage.loadMovie(backg[i]); 
da kommt die Fehlermeldung:
PHP-Code:
Ziel nicht gefundenZiel="undefined" Basis="_level0" 
und die 4. for-Schleife wird aus einem mir unbekannten Grund gar nicht erst durchlaufen!

Das sind eigentlich die Probleme die ich damit habe! Deshalb kann ich auch nicht wirklich überprüfen ob das Script auch die richtigen Ergebnisse bringt!

Danke für eure Hilfe

mfg
Gery
mtd04043 ist offline   Mit Zitat antworten
Alt 08-12-2005, 22:01   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
ich gehs grade durch, dauert etwas, Geduld …
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 08-12-2005, 22:03   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 19
Hey DANKE!!!!
mtd04043 ist offline   Mit Zitat antworten
Alt 08-12-2005, 22:23   #8 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Hier, sieht länger aus, ists aber nur, weil ich mehr lokale Variablen verwende.
PHP-Code:
var fotoalbum :XML = new XML();
fotoalbum.onLoad geladen;
fotoalbum.ignoreWhite true
fotoalbum.load("test.xml");

_root.anzahlSeiten 0;
_root.anzahlBilder = [];
_root.namen = [];
_root.pos_x = [];
_root.pos_y = [];
_root.backg = [];

function 
geladen(success) :Void {
    if (!
success) {
        
trace ("Fehler beim laden des XML-Files");
        return;
    }
    
    
_root.anzahlSeiten this.firstChild.childNodes.length;
    
    var 
baseNode XMLNode this.firstChild;
    var 
pageNode XMLNode;
    var 
imageNode XMLNode;
    
    var 
Number;
    var 
Number;
    
    var 
imageCount Number;
    
    var 
pageNames : Array;
    var 
pagePosX : Array;
    var 
pagePosY : Array;
    
    for (
0anzahlSeiteni++)  {
        
pageNode baseNode.childNodes[i];
        
        
imageCount _root.anzahlBilder[i] = pageNode.childNodes.length;
        
        
pageNames _root.namen[i] = new Array();
        
pagePosX _root.pos_x[i] = new Array();
        
pagePosY _root.pos_y[i] = new Array();
        
        
_root.backg[i] = pageNode.attributes.layout;
        
        for (
0imageCountj++) {
            
imageNode pageNode.childNodes[j];
            
            
pageNames[j] = imageNode.attributes.dateiname;
            
pagePosX[j] = imageNode.attributes.posx;
            
pagePosY[j] = imageNode.attributes.posy;
        }
    }
    
    var 
mcArray : Array = [];
    var 
mcPage MovieClip;
    var 
mcPicture MovieClip;
    
    var 
pageContainer MovieClip _root.createEmptyMovieClip("pageContainer"1);
    
    for (
0anzahlSeiteni++)    {
        
mcPage mcArray[i] = pageContainer.createEmptyMovieClip("page" ii);
        
        
mcPage.createEmptyMovieClip("backgroundContainer", -1);
        
mcPage.backgroundContainer.loadMovie(_root.backg[i]);
        
        
imageCount _root.anzahlBilder[i];
        
        
pageNames _root.namen[i];
        
pagePosX _root.pos_x[i];
        
pagePosY _root.pos_y[i];
        
        for (
0imageCountj++) {
            
mcPicture mcPage.createEmptyMovieClip(pageNames[j], mcPage.getNextHighestDepth());
            
mcPicture.loadMovie(pageNames[j]);
            
mcPicture._x pagePosX[j];
            
mcPicture._y pagePosY[j];
        }
    }

Warum eigentlich nicht gleich die Bilder erstellen?, so gehst du alles zweimal durch
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 08-12-2005, 22:41   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 19
Tja wie gesagt, bin noch ziemlich neu hier! werds aber noch versuchen zu verbessern!

Vielen Dank für deine schnelle Hilfe!

mfg
Gery
mtd04043 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 13:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele