Preloader - externe Flashs funktionieren nicht richt

cve

Grünschnabel
Moin zusammen,

ich weiss dass das Thema Preloader schon ziemlich breitgetreten ist, kriege es aber trotzdem nicht hin ...

Ich möchte z.B. mit dem tf_loader_v2 externe Flashs nachladen. Funktioniert soweit auch ganz gut, aber manche laufen nicht richtig. (Es sind menügesteuerte Präsentationen). Bei einigen geht alles, bei anderen geht die Navigation nicht bzw nicht richtig. An die Quellen der nachzuladenden Flashs komme ich leider nicht ran, sodass ich keinen Einblick habe worind die sich unterscheiden.

Ohne Preloader funktionieren alle wunderbar.
Was würdet Ihr versuchen?

Gruss
CvE
 
Hi und willkommen im Forum,

das Problem kann mehrere Ursachen haben (z.B. greifen die eingeladenen Dateien u.U. auf _root zu, weil sie davon ausgehen, auf der Hauptzeitleiste zu laufen). Ohne Einblick in die Quelldateien ist das schwer zu sagen.

Alternativ könnte man versuchen, die Dateien in eine Stufe (loadMovieNum statt loadMovie) zu laden, um das Problem zu umgehen.

Wenn Du die entsprechenden Rechte dazu hast (was ich hoffe, wenn Du die Filme auf Deiner Seite veröffentlichen willst), poste doch mal eine dieser Dateien, damit ich es testen kann.

Gruß
.
 
Hi,

sorry für die Verzögerung - ich hab recht viel um die Ohren im Moment.

Probier mal die Preloader-Version im Anhang; sie lädt den Film nicht in einen Container, sondern in Stufe 1.

Gruß
.
 

Anhänge

Hi Tobias,

vielen Dank für deine Hilfe. Ich gelube jetzt sind wir einStück weiter. Das nachzuladenede File funktioniert jetzt! Hurra!

Nur, leider geht die Preloaderanzeige in dieser Version nicht. :(

Ich habe mal, obwohl wenig Ahnung von Flash, selber geforscht und festgestellt, dass in der Funktion

Code:
function preload() {
                delete this.onEnterFrame;
	loadMovieNum(src, _level1);
	var stime = getTimer();
	this.onEnterFrame = function() {
		trace("this.onenterframe");
		_level1._visible = false;
		if (willplay) _level1.stop();
		var cur = _level1.getBytesLoaded();
		var max = _level1.getBytesTotal();
		if (cur > 10 && max > 10) {
			var percent = cur * 100 / max;
			loader.setPerc(percent);
			
			trace(percent);
			if (percent>=100) {
				finished();
			}
		}
		if (getTimer() - stime > timeout) {
			finished();
		}
	}
}

das Ereignis this.onEnterFrame gar nicht ausgelöst wurde und damit die Dinge zum setzen der Prozente nicht ausgeführt werden. Dann kann es ja auch nicht gehen. Nur: warum nicht?

Noch etwas, was ich nicht verstehe: In der Funktion wird mit

loader.setPerc(percent);

eine weitere Funktion aufgerufen die sich offensichtlich in dem MC tf_loader in der Library befindet.
Ich habe mir einen Wolf gesucht: Wo ist der Name "loader" definiert?:confused:

Gruss
CvE
 
Hi,

das Objekt "loader" befindet sich auf der Zeitleiste des MC "preloader": Es handelt sich um die Instanz des MC "tf_loader" mit dem Instanznamen "loader".

Ich kann mir nicht erklären, warum die onEnterFrame-Methode bei Dir nicht ausgelöst wird - bitte poste Deine beiden Dateien (den vorzuladenden Film und Deinen Preloader), dann schau ich noch mal drüber.

Gruß
.
 
Moin Tobias,

hier kommt der Preloader mit einem Beispiel movie (mit anderen geht es auch nicht) zum vorladen. Ich habe in deinem Preloader nur den Dateinamen (.src) angepasst.
Interessanterweise startet dieses Movie bevor es vollständig geladen ist auch wenn preloader.willplay auf false gesetzt ist.

Gruss
CvE
 

Anhänge

Hi,

oh, das war ein Flüchtigkeitsfehler meinerseits bei der Anpassung. :-(

Der Code im MC "preloader" muss folgendermaßen aussehen (geänderte Partien rot gekennzeichnet):
Code:
var timeout = (timeout != undefined)? timeout : 10000;
var willplay = (willplay != undefined)? willplay : false;

this.onEnterFrame = function() {
	if (src != undefined) {
		preload();
	}
}

function preload() {
	delete this.onEnterFrame;
	loadMovieNum(src, 1); // die Stufe wird bei loadMovieNum als Nummer, nicht als Referenz angegeben.
	var stime = getTimer();
	this.onEnterFrame = function() {
		_level1._visible = false;
		if (willplay) _level1.stop();
		var cur = _level1.getBytesLoaded();
		var max = _level1.getBytesTotal();
		if (cur > 10 && max > 10) {
			var percent = cur * 100 / max;
			loader.setPerc(percent);
			if (percent>=100) {
				finished();
			}
		}
		if (getTimer() - stime > timeout) {
			finished();
		}
	}
}

function finished() {
	delete this.onEnterFrame;
	_level1._visible = true;
	if (willplay) _level1.play();
	this.removeMovieClip();
}

Gruß
.
 
Moin,

bitte keine Entschuldigungen!
Vielen Dank für die Hilfe. Jetzt geht es! Ich bin begeistert! Du hast einen gut! Ich klick jetzt erstmal alles an hier...;-)
 
Zurück