variable Anzahl an Bildern bei dynamischer Slideshow

kirowatti

Mitglied
Hallo!

Habe hier das Action Script einer dynamischen Slidshow.
Funktioniert auch bestens, aber weiß vielleicht jemand, was ich daran ändern kann, damit die Anzahl der geladenen Bildreihe variabel bleibt und ich so viele Bilder dazu laden kann, wie ich will, ohne das im Script anzupassen?

Jede Hilfe wäre toll!
L.D.
kirowatti

Das AS:

var tl = this;
var i = -1;
var anz = 5;
// Aanzahl Bilder
var bildpause = 2;
// Pause zwischen dem Laden
tl.createEmptyMovieClip("watcher", 0);
tl.createEmptyMovieClip("loader1", 1);
tl.createEmptyMovieClip("loader2", 2);
function nextPic() {
i = i<anz-1 ? ++i : 0;
clearInterval(tl.iv);
if (mc != tl.loader1) {
mc = tl.loader1;
} else {
mc = tl.loader2;
}
mc._alpha = 0;
mc.swapDepths(2);
mc.loadMovie("image"+i+".jpg");
tl.watcher.onEnterFrame = function() {
if (mc.getBytesLoaded()>=mc.getBytesTotal() && mc.getBytesLoaded()>4) {
if (mc._alpha<100) {
mc._alpha += 5;
} else {
delete this.onEnterFrame;
tl.iv = setInterval(nextPic, bildpause*1000);
}
}
};
}
//
nextPic();
 
Hi,

bevor ich mir den Code ansehe, möchte ich Dich bitten, ihn einzurücken, und in [CODE] - oder [ACTIONSCRIPT]-Tags zu setzen.

... von dem Ding bekommt man ja Augenkrebs! :eek:

Gruß
.
 
ist es so besser für die äuglein?
wußte echt nicht, dass es so ne codeanzeige gibt. :)

Code:
var tl = this;
var i = -1;
var anz = 25;
// Aanzahl Bilder 
var bildpause = 2;
// Pause zwischen dem Laden 
tl.createEmptyMovieClip("watcher", 0);
tl.createEmptyMovieClip("loader1", 1);
tl.createEmptyMovieClip("loader2", 2);
function nextPic() {
	i = i<anz-1 ? ++i : 0;
	clearInterval(tl.iv);
	if (mc != tl.loader1) {
		mc = tl.loader1;
	} else {
		mc = tl.loader2;
	}
	mc._alpha = 0;
	mc.swapDepths(2);
	mc.loadMovie("../referenz-galerie/image"+i+".jpg");
	tl.watcher.onEnterFrame = function() {
		if (mc.getBytesLoaded()>=mc.getBytesTotal() && mc.getBytesLoaded()>4) {
			if (mc._alpha<100) {
				mc._alpha += 5;
			} else {
				delete this.onEnterFrame;
				tl.iv = setInterval(nextPic, bildpause*1000);
			}
		}
	};
}
//  
nextPic();
 
Zuletzt bearbeitet:
Mit "Einrücken und in Code-Tags setzen" war nicht unbedingt "als Zitat setzen" gemeint. ^^

So sollte das Endergebnis z.B. aussehen:
Code:
function nextPic() {
    i = i<anz-1 ? ++i : 0;
    clearInterval(tl.iv);
    if (mc != tl.loader1) {
        mc = tl.loader1;
    } else {
        mc = tl.loader2;
    }
}

Übrigens: Du kannst Deine eigenen Beiträge editieren - zur Formatierung des Codes ist also kein neues Posting erforderlich.

Gruß
.
 
so, nun müßte es aber gut sein. :)

wenn ich das schon nicht mit dem forum hinkriege, wie soll das dann mit dem script werden? :)

also, gibt es eine möglichkeit, den var anzahl befehl so zu ändern, dass ich in meinen ordner unbegrenzt neue bilder laden kann?
 
Hi,

der Code ansich bietet ja die Möglichkeit, beliebig viele Bilder anzuzeigen.

Dein Problem (so wie ich es verstehe) besteht darin, die Anzahl Bilder in einem Ordner herauszubekommen und sie dem Flashfilm mitzuteilen.

Da Flash von sich aus keine Verzeichnisse auf dem Server durchsuchen kann, hast Du folgende Möglichkeiten:
  • Gib die Anzahl der Bilder "von Hand" in der html-Seite ein, die den Flashfilm anzeigt. Zumindest die SWF muss nicht jedes Mal geändert werden, wenn Du die Variable "anz" per FlashVars übergibst. Die entsprechende Zeile im AS-Code (var anz = 25) muss dazu entfernt werden.

  • Lass z.B. ein PHP-Script das Verzeichnis durchsuchen, und die Anzahl an Flash übergeben. Die kannst Du dann entweder ebenfalls per FlashVars in den Quelltext der Seite schreiben, oder mit Flash und dem LoadVars-Objekt abfragen.

Ein Flashfilm wird üblicherweise mit einem Object- und einem inneren Embed-Tag in die Seite eingebunden. Für die Übergabe des FlashVars-Parameters musst Du im Object-Tag folgendes hinzufügen:
HTML:
<param name="flashvars" value="anz=25" />
.. und analog dazu folgendes Attribut-Wert-Paar im Embed-Tag:
HTML:
<embed ... flashvars="anz=25" ... />

Schreibst Du den Wert per PHP in die Seite, könnte das so aussehen:
PHP:
<param name="flashvars" value="anz=<?php echo $anzahl; ?>" />
bzw.:
PHP:
<embed ... flashvars="anz=<?php echo $anzahl; ?>" ... />

Gruß
.
 
Das war ja schon mal recht ausführlich! Vielen Dank!
Aber irgendwie funktioniert es nicht bei mir.
Habe mich für die HTML-Lösung entschieden und nun folgenden Code in der HTML-Seite:
Code:
      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="250" height="200">
      <param name="flashvars" value="anz=25" />
	  <param name="movie" value="../flash/galerie2.swf" />
      <param name="quality" value="high" />
      <embed src="../flash/galerie2.swf" flashvars="anz=25" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="250" height="200"></embed>
    </object>

In meiner Flashdatein habe ich die Zeile "var anz = 25" entfernt, aber jetzt erscheint nur noch das erste Bild und die Ani bleibt stehen.
Was kann ich denn da noch falsch gemacht haben?
 
Zurück