Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-11-2005, 19:59   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 69
XML Fotogalerie - Problem beim laden

Hi,

ich komme beim dynamischen laden vordefinierter Bilder aus einer XML Datei keinen preload hin.

Das auslesen klappt prima - jedoch harkt es nach Auswahl eines anderen Bildes...

Vielleicht könnt Ihr mir auf die sprünge helfen..


Hauptfilm:
Code:
function Holding(id, imgWidth, imgHeight, filename, setname) {
    this.id = id;
    this.imgWidth = imgWidth;
    this.imgHeight = imgHeight;
    this.filename = filename;
    this.setName = setname;
}

// Thumbnails + Zufallswiedergabe
function populateThumbs(group) {
    group = "set0" + group;
    folder = _root[group][0].setName;
    for (i = 1; i <= 10; i++) {
        unloadMovie(this["thumb0" + i].imgHold);
        eval("thumb0" + i).newBorder.dwn = 1;
        eval("thumb0" + i).newBorder.go = 1;
        eval("thumb0" + i).mainBtn.enabled = false;
        eval("thumb0" + i).active = "no";
    } 
    photoCount = _root[group].length;
    for (i = 0; i < photoCount; i++) {
        thumbnail = _root[group][i].filename + "_thumb.jpg";
        targ = this["thumb0" + (i + 1)];
        targ.mainBtn.enabled = true;
        loadMovie("gallery/" + folder + "/" + thumbnail, targ.imgHold);
        targ.newBorder.go = 1;
        targ.newBorder.up = 1;
        targ.active = "yes";
    } 
    randPhoto = random(_root["set0" + activeSet].length);
    if (randPhoto < 1) {
        randPhoto = 1;
    } 
    viewPhoto(randPhoto);
} 

// Navigation / Bild Medium (normale Ansicht)
function viewPhoto(targ) {
    activePic = targ;
    targ = targ - 1;
    group = "set0" + activeSet;
    folder = _root[group][0].setName;
    medium = _root[group][targ].filename + "_med.jpg";
    j++;
    photoHoldName = "photoHold" + j;
    detail.attachMovie("blankHold", photoHoldName, j);
    detail[photoHoldName].loadMovie("gallery/" + folder + "/" + medium);
    if (j > 1) {
        trace("PLAYING AT FRAME 2");
        detail[photoHoldName]._alpha = 0; // Medium Bild ausblenden
        overlay.gotoAndPlay(2); // Overlay Effekt abspielen
        imgPreload.dest = "_parent.detail.photoHold" + j;
    } 
    if (activePic >= _root[group].length) {
        nextPic = 1;
    }
    else {
        nextPic = activePic + 1;
    } 
    if (activePic == 1) {
        prevPic = _root[group].length;
    }
    else {
        prevPic = activePic - 1;
    }
}

// Status in der Navigationsleiste wechseln
function changePreloader(bool) {
    if (bool == 1) {
        imgPreload._xscale = 0;
        imgPreload._visible = 1;
        navPrev._visible = 0;
        navNext._visible = 0;
    }
    else {
        overlay.gotoAndStop(1);
        overlay._alpha = 100;
        imgPreload._visible = 0;
        navPrev._visible = 1;
        navNext._visible = 1;
    }
}

galleryParsed = 0;

//XML
galleryXML = new XML();
galleryXML.ignoreWhite = true; // Leerzeichen ignorieren
galleryXML.load("gallery.xml");
galleryXML.onLoad = parseGallery;

stop();

Script auf dem Preloader (imgPreloader):
Code:
onClipEvent (load) {
    _xscale = 0;
    goo = 0;
}

// Medium Bild preloaden
onClipEvent (enterFrame) {
    if (goo == 1) {
        loadd = dest.getBytesLoaded();
        totall = dest.getBytesTotal();
        percent = int(loadd / totall * 100);
        if (totall > 0) {
            _xscale = percent;
            if (percent > 99) {
                goo = 0;
                _parent.imgWatch.dest = dest;
                _parent.imgWatch.go = 1;
            }
        }
    }
}

MovieClips mit einem Überblendeffekt, der über das "Medium Bild" gelegt ist (overlay):
Code:
_parent.changePreloader(1);
_parent.imgPreload.goo = 1;
stop();

"Vor" Button:
Code:
on (release) {
    viewPhoto(nextPic);
}

"Zurück" Button:
Code:
on (release) {
    viewPhoto(prevPic);
}

MovieClip um den Status des Überblendeffektes und des Preloaders zu ändern (imgWatch):
Code:
onClipEvent (load) {
    go = 0;
}

// Overlay Effekt nach preloading
onClipEvent (enterFrame) {
    if (go == 1) {
        up = 0;
        t = t + 5;
        dest._alpha = t;
        _parent.overlay._alpha = 100 - t;
        if (t == 100) {
            _parent.changePreloader(0);
            go = 0;
            t = 0;
        }
    }
}

...und hier noch die XML Datei (Script für die "Set"-Auswahl habe ich oben ^^ nicht hingeschrieben):
Code:
<gallery setTotal="3">
<set1 count="4" name="gallery1">
     <photo width="500" height="800">008</photo>
     <photo width="500" height="800">007</photo>
     <photo width="500" height="800">006</photo>
     <photo width="500" height="800">005</photo>
</set1>
<set2 count="2" name="gallery2">
     <photo width="700" height="500">004</photo>
     <photo width="500" height="700">003</photo>
</set2>
<set3 count="2" name="gallery3">
     <photo width="500" height="800">002</photo>
     <photo width="500" height="800">001</photo>
</set3>
</gallery>

Geändert von crustymalte (19-11-2005 um 20:14 Uhr)
crustymalte ist offline   Mit Zitat antworten
Alt 19-11-2005, 21:08   #2 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Wo pushst'n deine XML in ein Array?

--pp
~pyropete~ ist offline   Mit Zitat antworten
Alt 19-11-2005, 21:21   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 69
hoppla - hier:
Code:
function parseGallery(success) {
    if (success) {
        setCount = this.firstChild.attributes.setTotal;
        var e = this.firstChild.firstChild;
        for (i = 0; i < setCount; i++) {
            id = 0;
            if (e.nodeName == "set" + (i + 1)) {
                f = e.firstChild;
                _root["set0" + (i + 1)] = new Array();
                while (f != null) {
                    id++;
                    var h = new Holding(id, f.attributes.width, f.attributes.height, f.firstChild.nodeValue, e.attributes.name);
                    _root["set0" + (i + 1)].push(h);
                    f = f.nextSibling;
                }
            }
            e = e.nextSibling;
        } 
        galleryParsed = 1;
    } 
}
crustymalte ist offline   Mit Zitat antworten
Alt 19-11-2005, 21:26   #4 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Hm ...
Was/wie genau hakt's denn?

--pp
~pyropete~ ist offline   Mit Zitat antworten
Alt 19-11-2005, 21:40   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 69
nach drücken des next buttons, wird der overlay mc abgespielt - am ende stoppt er und sollte eigentlich folgendes ausführen
Code:
_parent.changePreloader(1);
_parent.imgPreload.goo = 1;
, jedoch erscheint kein preloader.

die if schleife wird noch abgespielt
Code:
function changePreloader(bool) {
    if (bool == 1) {
        imgPreload._xscale = 0;
        imgPreload._visible = 1;
        navPrev._visible = 0;
        navNext._visible = 0;
    }
    else {
        overlay.gotoAndStop(1);
        overlay._alpha = 100;
        imgPreload._visible = 0;
        navPrev._visible = 1;
        navNext._visible = 1;
    }
}
- zu else kommt er nicht, da der preloader wohl irgendwo stehen bleibt oder erst gar nicht angezeigt wird!?

so soll es ablaufen:
1. overlay mc abspielen/ navigation ausblenden
2. laden
3. navigation und das neue bild einblenden
crustymalte ist offline   Mit Zitat antworten
Alt 20-11-2005, 14:59   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 69
oder soll ich die fla mal hochladen?
crustymalte ist offline   Mit Zitat antworten
Alt 20-11-2005, 16:20   #7 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Thumbs up Eine prima Idee!

Jawohl.

--pp
~pyropete~ ist offline   Mit Zitat antworten
Alt 27-11-2005, 21:48   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 69
hehe - okay, hier ist die fla...
crustymalte 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:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele