Thumbnails einblenden

pat_morita

Mitglied
Hi,

ich lade in meiner XML Gallerie Thumbnails mit folgendem Script in den Container "thumbnails"

PHP:
myPhoto = new XML();
myPhoto.ignoreWhite = true;
myPhoto.load("xmlphoto.xml");
myPhoto.onLoad = function(success) {
numimages = this.firstChild.childNodes.length;
spacing = 70;
for (i=0; i<numimages; i++) {
picHolder = this.firstChild.childNodes[i];
this.thumbHolder = _root.thumbnails.createEmptyMovieClip("thumbnail"+i, i);
this.thumbHolder._x = i*spacing;
this.thumbHolder.title = this.picHolder.attributes.title;
this.thumbHolder.main = this.picHolder.attributes.main;

this.thumbLoader = this.thumbHolder.createEmptyMovieClip("thumbnail_image"+i, i);
this.thumbLoader.loadMovie(picHolder.attributes.thmb);
//create new movie and then load the thumbnails into it.

thumbHolder.onRelease = function() {
loader.loadMovie(this.main);
title_txt.text = this.title;
};
}
};

Wie schaffe ich es, daß die Thumbnails nicht einfach nur auftauchen sondern nacheinander (sprich vom ersten bis zum letzen) eingeblendet werden
Ich denke mal, ich muß ein script an den Container hängen, bei einem einfachen Bild wüßte ich ja wie das geht, aber die Menge der Bilder ändert sich ja bei jeder Gallerie...

Jemand eine idee?

Lg Pat
 
ich müßte ja irgendwie die nummerierung der thumbnails abfragen bzw die ladezustände der einzelnen. Aber wie? Und wie krieg ich dann die Reihung hin? oO
 
Hi,

ich löse das Problem meistens so, dass die Thumbs das Laden ihrer Bilder selbst übernehmen, und danach eine Callback-Methode im Mutterobjekt auslösen.

Exemplarische Vorgehensweise:
Code:
// Mutterobjekt:

var thumb = new Array();

var loaded = 0;

for (var i=0; i<anzahl; i++) {
  thumb[i] = this.attachMovie("thumbnail", "thumb" + i, i);
  thumb[i].owner = this;
  thumb[i].src = myXML.childNodes[i].attributes.thumb;
  thumb[i]._x = i * (thumbWidth + 2);
}

this.onEnterFrame = function() {
  delete this.onEnterFrame;
  thumb[0].doLoad(); // erstes Thumbnail laden
}

function nextLoaded() {
  loaded ++;
  if (loaded >= thumb.length) { // alle sind geladen
    // thumbs anzeigen
  } else {
    thumb[loaded].doLoad(); // nächstes Anzeigen
}
Code:
// Thumbnail:

var mcl = new MovieClipLoader();

mcl.onLoadInit = function() {
  owner.nextLoaded();
}

function doLoad() {
  mcl.loadClip(src, container);
}

Gruß
.
 
ok, nochmal für langsame (und noch nicht so AS erfahrene)

du hängst ein script an das Mutterobjekt (sprich an meinen Thumbnailcontainer)

und das Thumbnailscript füge ich in mein oben gepostetes script ein, um es an jedes einzelne Thumb anzuhängen, oder?

ich versteh noch nicht ganz den Teil hier... wieso frägst du die länge ab?

PHP:
function nextLoaded() {
  loaded ++;
  if (loaded >= thumb.length) { // alle sind geladen
    // thumbs anzeigen
  } else {
    thumb[loaded].doLoad(); // nächstes Anzeigen
}

lg pat
 
Hi,

Code:
function nextLoaded() { // wird von jedem Thumbnail aufgerufen, sobald sein Bild geladen ist
  loaded ++; // Anzahl geladener Thumbnails hochzählen (ist ja jedes Mal eins mehr)
  if (loaded >= thumb.length) { // "thumb.length" ist die Anzahl der Thumbnails.
    // Wenn der Zähler "loaded" diesen Wert überschreitet, heisst das, dass alle Thumbs geladen sind.
    // thumbs anzeigen
  } else { // wenn aber noch welche ausstehen ...
    thumb[loaded].doLoad(); // sage ich dem nächsten Thumbnail: "lade Dein Bild!"
}

Gruß
.
 
Zurück