Diashow läuft nicht flüssig genug

ouagadugu

Mitglied
Hallo Zusammen,
ich habe hier im Forum die Datei multifade_mona.zip (hier: http://www.tutorials.de/forum/flash/273666-play-pause-button.html) gefunden und für meine Bedürfnisse etwas angepasst. In der Beispieldatei liegen 3 Bilder, bei mir läuft die Show auch gut bis ca. 12-15 Bildern. Ich habe aber 58 Fotos und da kommt der "fade" ganz schön ins stocken. Die ganze swf wird bei mir "vorgeladen", d.h. daran kann es nicht liegen. Wie kann ich das in den Griff bekommen.
Grüße
Michel
 
Hi,

wenn ca. 60 Bilder mit einer Transparenz von 0% übereinandergelegt werden, kann das die Performance schon beeinträchtigen.

Fürs erste könnte es helfen, die Bilder zusätzlich über _visible auszublenden. Ändere dafür zunächst die Schleife zum Instanzieren der Bilder folgendermaßen:
Code:
// Bilder erstellen:
for (var i=0; i<images.length; i++) {
	clip[i] = ct.createEmptyMovieClip("clip" + i, i);
	clip[i]._alpha = 0; // ausblenden
	clip[i]._visible = false;
	var img = clip[i].attachMovie(images[i], "ct", 1); // Bild instanzieren
	img._x = -img._width / 2; // und zentrieren
	img._y = -img._height / 2;
}

Ändere nun den Prototyp "fade" ebenfalls ab:
Code:
MovieClip.prototype.fade = function(da, s, _callback) {
	if (da < this._alpha) {
		s = -s;
	} else {
		this._visible = true;
	}
	this.onEnterFrame = function() {
		this._alpha += s;
		if (s > 0 && this._alpha > da) this._alpha = da;
		if (s < 0 && this._alpha < da) this._alpha = da;
		if (this._alpha == da) {
			if (da == 0) this._visible = false;
			delete this.onEnterFrame;
			_callback();
		}
	}
}

Sollte das nichts bringen, so müsste man das Script so umstellen, dass nur die jeweils sichtbaren Bilder instanziert werden.

Gruß
.
 
Vielen Dank, habs geändert und schon läufts sauber...
habe zuvor versucht das script umzustellen, da ich ohnehin schon einen anderen code-Schnipsel verwende (ebenfalls dank des Forums), der Bilder abwechselnd in 2 Container ein/ausblendet, allerdings nur beim anklicken auf ein Icon. Ich wollte nun eine Steuerung hinzufügen für den automatischen Fortlauf der Show. Wie könnte ich vorgehen, wenn ich den multifade_mona code und folgenden code kombinieren möchte:
(nichts für ungut, bin schon happy mit der _visible Lösung, lerne aber gerne wies eleganter geht)


PHP:
var Inhalt = 0;
var container_aktuell = 2;
this["container"+container_aktuell].attachMovie("bild1","image",1);//zeigt das erste Bild als Startbild sofort an

var bild = 58;//Anzahl der Bilder

var speed = 10;

this.onEnterFrame = function() {
	for (var i = 1; i<=58; i++) {
		this.leiste["icn"+i].number = i;
		this.leiste["icn"+i].onRelease = function() {
			_root.setContent(this.number);
			fadeOut(ct);//den Container mit der automatik-slideshow ausblenden beim klicken eines icons

		};

	}
	delete this.onEnterFrame;
};



function setContent(nr) {

	Inhalt = 0;
	if (Inhalt=bild) {
		Inhalt = nr;
	}
	if (Inhalt != bild) {
		Inhalt = nr;
	}
	fadeOut(this["container"+container_aktuell]);
	container_aktuell = (container_aktuell == 1) ? 2 : 1;
	this["container"+container_aktuell].attachMovie("bild"+nr,"image",1);
	fadeIn(this["container"+container_aktuell]);
}
function fadeOut(obj) {
	obj.onEnterFrame = function() {
		if (this._alpha>=speed) {
			this._alpha -= speed;
		} else {
			this._alpha = 0;
			delete this.onEnterFrame;
		}
	};
}
function fadeIn(obj) {
	obj.onEnterFrame = function() {
		if (this._alpha<=100-speed) {
			this._alpha += speed;
		} else {
			this._alpha = 100;
			delete this.onEnterFrame;
		}
	};
}
 
Hi,

eine Kombination zweier verschiedener Ansätze ist nicht immer mit wenigen Zeilen möglich.

Sinnvoller wäre es wohl, den ersten Code so umzustellen, dass die Bilder abwechselnd instanziert werden.

Ich kann Dir aber nicht sagen, wann ich dazu komme, ein entsprechendes Beispiel zu posten.

Gruß
.
 
Zurück