Externer Preloader - Problem

x_Red_Eagle_x

Erfahrenes Mitglied
Gut dass ihr alle im Preloader-Tut Thread nicht geschrieben habt dass euch solche fragen schon auf den geist gehn, denn ich hab ein kleines problemchen. Mein Preloader macht gar nix (stimmt auch nicht ganz):
lokal scheint es wenigstens (zwar noch nicht gaz zu funktionieren - jedoch wenn ich das ganze auf einen UNIX Server hinaufstelle sieht man nur den preloader und und das erste frame ohne irgendwelche änderungen (mit groß- kleinschreibung hab ich schon experiementiert)

Code:
onClipEvent( enterFrame )
{
	//load movie
	if(_global.mainIsLoading==false)
	{
		loadMovie("BvS.swf",_root.mcMain);
		//_root.mcMain._visible=false;
		_global.mainIsLoading=true;
	}
	
	_root.mcPreloader.mcDropCounter.txtDropCounter.text = siteLoaded;
	siteLoaded = Math.round(int((loaded_bytes/total_bytes)*100));
	if( dropCounter != siteLoaded )
	{
		_root.mcPreloader.mcTropfenAnimiert.play();
	}
	dropCounter=siteLoaded;
	// bytes
	total_bytes = _root.mcMain.getBytesTotal();
	loaded_bytes = _root.mcMain.getBytesLoaded();
	remaining_bytes = total_bytes-loaded_bytes;
	// kilo bytes
	_root.mcPreloader.mcKBLoaded.txtKBLoaded.text = int(loaded_bytes/1024);
	_root.mcPreloader.mcKBLeft.txtKBLeft.text = int(remaining_bytes/1024);
	if (total_bytes <= loaded_bytes && _global.mainIsLoading) 
	{
		trace("loaded");
		mcPreloader._visible=false;
		mcMain._visible=true;
		mcMain.play();
	}
}

vielleicht sieht jemand auf nem schnellen blick einen fehler oder um mehr klarheit zu schaffen hab i den preloader als rar drangehängt.

kann mir da jemand licht in meine düsternis bringen
danke im voraus
 

Anhänge

Zuletzt bearbeitet:
jetzt geht mein Preloader noch immer aber falsch -> er bricht irgendwann in der mitte ab und ich finde keinen Fehler (hab den Code schon modifiziert):
Code:
mainIsLoading=false;
mcMain._alpha=0;
isNotFirst=true;
stop();

//Eigentliche Preloader
mcPreloader.onEnterFrame = function()
{
	if(!isNotFirst)
	{
		isNotFirst=!isNotFirst;
	}
	//load movie
	if(mainIsLoading==false)
	{
		loadMovie("bvs.swf",mcMain);
		mainIsLoading=true;
		isNotFirst=false;
	}
	
	mcPreloader.mcDropCounter.txtDropCounter.text = siteLoaded;
	siteLoaded = Math.round(int((loaded_bytes/total_bytes)*100));
	if( dropCounter != siteLoaded )
	{
		mcPreloader.mcTropfenAnimiert.play();
	}
	dropCounter=siteLoaded;
	
	// bytes
	total_bytes = mcMain.getBytesTotal()+this.getBytesTotal();
	loaded_bytes = mcMain.getBytesLoaded()+this.getBytesLoaded();
	remaining_bytes = total_bytes-loaded_bytes;
	// kilo bytes
	mcPreloader.mcKBLoaded.txtKBLoaded.text = int(loaded_bytes/1024);
	mcPreloader.mcKBLeft.txtKBLeft.text = int(remaining_bytes/1024);
	if(total_bytes <= loaded_bytes && mainIsLoading && isNotFirst) 
	{	
		play();
		delete mcPreloader.onEnterFrame;
	}
}
Die Variable isNotFirst, ist nur dafür da, dass sie das erste Mal (wenn die größe des externen Files noch nicht bekannt ist gleich abbricht)
Damit mein Problem klarer wird, hier ist das Bsp.: Problemkind
Vielleicht befass ich mich nur schon zulange damit, dass ich keinen Fehler finde .

bitte kann mir jemand helfen und danke für den Aufwand dies zu lesen

mfg

//edit
link gefixt

so jetzt ist es soweit -> is wird gar nix mehr angezeigt mit dem gleichen code
HIIIIIIIIILLLLLLLLLLLFFFFFFFFFFFFFFEE
 
Zuletzt bearbeitet:
Also ich hab einen weiteren Test durchgeführt und bei mir zeigt er durch zweit Test -Textfelder die zwei Werte 171 (was demnach Bytes sein müsste an) jedoch ist das bvs.swf alleine schon über 2MB groß und der Preloader alleine so an die 103 KB.
Wenn ich die Zeile so abändere, dass aus
total_bytes = mcMain.getBytesTotal()+this.getBytesTotal();
total_bytes = mcMain.getBytesTotal(); mache steht darin der Wert 0;
Jedoch liegen auf dem Server, dass zu reinladende File (funktioniert wenn man es extra aufruft)
Lokal funktioniert alles einwandfrei.

Ich kann nur nochmals sagen, dass ich kurz vor dem verzweifeln bin weil ich kein Licht am Ende des Tunnels seh. Ich irre im Schwarzen umher.

Hilfe
 
Bin gerade zeitlich etwas knapp, deshalb kann ich deine Version nicht gründlich durchtesten.

Hier aber mal per Copy&Paste, was ich in einem anderen Forum geschrieben hab:
Hallo zusammen,

oft gefragt und sicher auch schon oft beantwortet aber da ich gerade dabei war - und es auch nach wie vor immer wieder gefragt wird - poste ich mal eine recht einfache (weitere) Version hier. Eine mehr schadet ja nicht. ;)

Prinzipiell geht es darum, nur einen Loader im Hauptfilm zu haben, der den Ladestatus beliebiger hinzugeladener externer Dateien (swf/jpg) anzeigt.

Benötigt dazu wird:
- Ein Zielmovieclip mit Instanznamen, hier manuell auf die Bühne gelegt und mit dem Instanznamen "ladeziel" versehen, in den die externen Daten geladen werden. Natürlich läßt sich der auch dynamisch erstellen mit createEmptyMovieclip Das ist dann eure Anpassungsarbeit.
- Einen Movieclip (hier mit dem Instanznamen "loader") in dem die Ladeanzeigen sind. Hier ein Balken mit dem Instanznamen "balken" und ein dynamisches Textfeld mit dem Instanznamen "prozentanzeige"
- Und natürlich Buttons, die externe Daten laden.

Das Script für alles liegt komplett im ersten Frame auf der Hauptzeitleiste und lautet folgendermaßen (und ich hoffe, ich habe es einigermaßen ausreichend kommentiert).
PHP:
//--- Aktionen für die Button_MCs um externe Daten
//--- in den Ziel-MC "ladeziel" zu laden ---------
lade_1.onPress = function() {
	// Ladebefehl
	ladeziel.loadMovie("film1.swf");
	// Aufruf der Funktion für die Preloaderanzeige
	ladestatus();
};
lade_2.onPress = function() {
	ladeziel.loadMovie("film2.swf");
	ladestatus();
};
lade_3.onPress = function() {
	ladeziel.loadMovie("bild3.jpg");
	ladestatus();
};

//--- Ladeanzeige unsichtbar machen ---------------
loader._visible = false;

//--- Ladefunktion --------------------------------
ladestatus = function () {
	// Einen onEnterFrame-Event erstellen, so dass nun
	// der Ladezustand kontinuierlich abgefragt und
	// angezeigt wird
	loader.onEnterFrame = function() {
		// Geladene und zu ladenede Bytetes abfragen
		geladen = _root.ladeziel.getBytesLoaded();
		zuladen = _root.ladeziel.getBytesTotal();
		// Sicherheitsabfrage, da ein leerer MC so ungefähr
		// 4 bis 5 Bytes hat und zu Verfälschungen führen könnte
		if (geladen>=10) {
			// Ladeanzeige sichtbar machen
			loader._visible = true;
			// Berechnung der bereits geladenen Prozent
			prozent = Math.round(geladen/zuladen*100);
			// Ausgabe im dynamischen Textfeld "prozentanzeige"
			this.prozentanzeige.text = prozent+" Prozent geladen";
			// Skalierung des Balkens anhand der Prozentzahl
			this.balken._xscale = prozent;
			// Wenn komplett geladen
			if (prozent>=100) {
				// den EnterFrame-Event löschen um Performance zu sparen
				delete this.onEnterFrame;
				// die Ladeanzeige wieder unsichtbar machen
				this._visible = false;
			}
		}
	};
};
Nicht erschrecken - sind glaub mehr Kommentar- als Scriptzeilen. ;)

Anzuschauen ist das ganze hier:
http://www.shockfusion.de/ff/ex_load/main.html

Und die Beispieldateien gibt es dort:
http://www.shockfusion.de/ff/ex_load/loader.zip
Vielleicht hilft's dir ja weiter.

Gruß
Rena
 
Bei mir hat er anscheinend das Problem, dass er die bvs.swf nicht findet (oder nicht laden kann) -> die früher angeführten Codesequenzen funktionieren nur Lokal, jedoch wenn ich diesen Code verwende (der meiner Ansicht nach genauso funktionieren sollte), geht es nicht einmal Lokal (da hat mcMain.getBytesTotal() den Wert 4)
Code:
mcMain._alpha=0;
stop();
i=0;

mcMain.onEnterFrame = function()
{
	loadMovie("bvs.swf",mcMain);
	trace("nope: "+i+"  getBytesTotal: "+mcMain.getBytesTotal());
	if( mcMain.getBytesTotal() >= 10)
	{
		trace("geschafft: "+i+"  getBytesTotal: "+mcMain.getBytesTotal());
		delete mcMain.onEnterFrame;
		LoadPreloader();
	}
        else {trace("kA");}
	i++;
}

function LoadPreloader()
{
	//Eigentliche Preloader
	mcPreloader.onEnterFrame = function()
	{
		mcPreloader.mcDropCounter.txtDropCounter.text = siteLoaded;
		siteLoaded = Math.round(int((loaded_bytes/total_bytes)*100));
		if( dropCounter != siteLoaded )
		{
			mcPreloader.mcTropfenAnimiert.play();
		}
		dropCounter=siteLoaded;
		
		// bytes
		total_bytes = mcMain.getBytesTotal()+this.getBytesTotal();
		loaded_bytes = mcMain.getBytesLoaded()+this.getBytesLoaded();
		remaining_bytes = total_bytes-loaded_bytes;
		// kilo bytes
		mcPreloader.mcKBLoaded.txtKBLoaded.text = int(loaded_bytes/1024);
		mcPreloader.mcKBLeft.txtKBLeft.text = int(remaining_bytes/1024);
		if(total_bytes <= loaded_bytes) 
		{	
			debug1.text=total_bytes;
			debug2.text=loaded_bytes;
			play();
			delete mcPreloader.onEnterFrame;
		}
	}
}
Das was noch merkwürdig ist, dass mcMain.onEnterFrame nur einmal durchlaufen wird, jedoch wenn man das LoadMovie ausklammert, dann wird es wieder in regelmäßigen abständen durchwandert

Hast du vielleicht (oder jemand anders) eine Idee wo das Problem ist?
 
Das einzige was etwas "abnormaler" sein könnte, ist dass ich viel mit den Fkt. attachMovie() (und etwas sehr viel weniger mit attachSound() - dafür sind die Daten aber größter).

Dies bedeutet, dass ich dass kleine Häckchen "In erstes Bild exportieren" ankreuzt habe.

Ansonsten ist nix besonderes dabei (onEnterFrame, Schleifen, on(...))

mfg

PS.: Kannst du mir vielleicht auch sagen, wieso meine letzte Preloader-Version(en) nicht funktionieren? (der kern ist ja der gleiche)
 
HI,

nun ja , ich vermute, das du aufgrund deines Alters noch nie in der Verlegenheit warst irgendetwas in BASIC programmieren zu müssen, was auch heute völlig überflüssig ist ,- das einzige was du heute daraus ziehen könntest wäre ein besseres Verständnis der notwendigen Reihenfolge der Befehlszeilen , die bei dir hoffnungslos verdreht war - übersetze dir einfach deinen kompletten Code in einfaches Deutsch und überlege dir ob das logisch war - ausserdem würde ich dir raten, allen code in frames zu notieren, und nicht auf den clips, du hattest noch einiges an Pfadverwirrung drin - schau dir einfach die fla an die ich gepostet habe - der grund warum ich mir die Zeit genommen habe (ohne dsl) deine riesigen Dateien hin und her zu schubsen (du hattest auch vergessen die bvs.swf mit zu posten) ist, das mir das projekt ziemlich gefallen hat - binde das ganze schön mittig und kontrolliert ein und optimiere noch die Graphiken, damit kannst du noch locker die Hälfte der Dateigrösse einsparen....dann hast du echt was nettes....

Wie gesagt, irgendetwas übersteuert das kontrollierte SIchtbarwerden des zuzuladenden Filmes , wahrscheinlich aus diesem heraus, vielleicht ein onClipEvent(load){this._visible = 1;} osä , keine Ahnung ohne fla....

Grüsse
B

P.S.: Was ist ist Monetization ? Geiles Rätsel bis man auf die Page kommt...
 
Zuletzt bearbeitet:
Zurück