fehler im fader

harrry

Erfahrenes Mitglied
Hallo,

ich habe versucht, einen Lader zu bauen für externe jpgs, die sich ein- und ausfaden sollen. Bin damit schon ziemlich weit, aber es ist noch ein Denkfehler drin: meiner irrigen Meinung nach sollte ein Klick genügen, um das erste Bild aus- und das nächste einzufaden. Man braucht aber leider 2 Klicks - denn irgendwie wird nicht alles, was in der Funktion steht, abgespielt.

Würde mich sehr freuen, wenn sich das jemand kurz ansähe und mir verriete, wo der Fehler liegt, lieben Dank!
 

Anhänge

  • fadeLoader.zip
    28,3 KB · Aufrufe: 13
Habe jetzt eine alte Skripthilfe von Tobias ausgepackt, damit funktioniert es!

Was ich allerdings leider nicht durchschaue, ist die "setcontent"-Sache, welche die Namen der Buttons verwendet. Geht das auch ohne diesen "case switch"? Ich hätte nämlich viel lieber die Möglichkeit, gleich direkt in der "onPress-Funktion" des Buttons auf der HZL die entsprechende jpg-Datei anzugeben, auf die hingeblendet werden soll.

Ist das also "vereinfachbar"? Und wenn ja, wie? Vielen Dank!
 

Anhänge

  • fadeLoader2.zip
    117 KB · Aufrufe: 9
Hi,

Code:
stop();
this.onEnterFrame = function() {
	button01.setText("ERSTER BUTTON");
	button02.setText("ZWEITER BUTTON");
	button03.setText("DRITTER BUTTON");
	delete this.onEnterFrame;
};
var currentContent = "";
// Aktueller Inhalt ("" = keiner)
function setContent(fname) {
	var new_content = fname;
	if (new_content != "" && new_content != current_content) {
		if (current_content != "") {
			switchContent(new_content);
			// Inhalt wechseln
		} else {
			loadContent(new_content);
			// Inhalt direkt laden
		}
	} else {
		switchContent(0);
		// Inhalt ausblenden
		current_content = 0;
	}
}
function switchContent(nc) {
	current_content = "";
	// Auf "" setzen, damit neue Inhalte schnell angezeigt werden können
	this.onEnterFrame = function() {
		container._alpha += (0-container._alpha)/2;
		// Container ausblenden
		if (container._alpha<1) {
			container._alpha = 0;
			if (nc!= "") {
				loadContent(nc);
				// Neuen Inhalt laden, 
			} else {
				delete this.onEnterFrame;
				// oder anhalten, wenn kein Inhalt
			}
		}
	};
}
function loadContent(nc) {
	var stime = getTimer();
	// Zeitstempel merken
	loader.loadContent(container, nc);
	// Inhalt laden lassen
	this.onEnterFrame = function() {
		container._alpha = 0;
		if (loader.isloaded == true) {
			// Wenn geladen:
			current_content = nc;
			// Aktuellen Inhalt setzen
			appearContent();
			// Inhalt anzeigen
		}
		if (getTimer()-stime>8000) {
			// Timeout beim Laden:
			current_content = 0;
			// Auf "" setzen
			container._alpha = 0;
			delete this.onEnterFrame;
		}
	};
}
function appearContent() {
	this.onEnterFrame = function() {
		container._alpha += (100-container._alpha)/6;
		// Inhalt einblenden
		if (container._alpha>99) {
			container._alpha = 100;
			delete this.onEnterFrame;
			// Anhalten
		}
	};
}
button01.onRelease = function() {
	setContent("wiese.jpg");
};
button02.onRelease = function() {
	setContent("blau.jpg");
};
button03.onRelease = function() {
	setContent("nochwas.jpg");
};

Gruß
.
 
Ich geb' zu, ich habe nicht reingeschaut. Kann ich aber morgen mal nachholen. ;)

EDIT: auf den ersten Blick: Die Funktion "bounce" sagt mir nicht viel, aber ich gehe davon aus, dass sich die beiden Aufrufe überschneiden (das Ausfaden ist noch nicht abgeschlossen, wenn das neue Bild geladen ist). Es ist hier sinnvoller, mit Callbacks zu arbeiten.

Ausserdem ist die Deklaration Deiner Listener etwas merkwürdig: MovieClipLoader als lokaler Member eines Mausereignisses, Listener als Zeitleistenvariable, aber die Listener-Methoden wieder als lokale Member, die immer wieder überschrieben werden ...

Gruß
.
 
Die Liste der Fehler klingt ja verdächtig nach "unheilbar" - ich denke, ich fahre besser mit Deinem zweiten Skript, vor allem nach der Vereinfachung. Nochmals vielen Dank!
 
Zurück