Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash MX 2004

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-01-2008, 19:09   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Ort: Berlin
Beiträge: 4
Universeller externer Preloader

Hallo liebe Flash-Community,

bisher habe ich sehr stark von Euch und Eurem Wissen profitiert. Oft, wenn ich ein Problem hatte, bin ich zuerst ins FlashForum gehüpft und habe fast immer gefunden, wonach ich gesucht habe .

Deshalb will ich jetzt mal etwas zurück geben. Ich weiß nicht, ob es so etwas schonmal gab. Wenn ja, dann tut mir das Leid. Ich habe die Suchfunktion bemüht und viiiiele Preloader gefunden, aber noch nicht so einen.

Also : Mein Ziel war eine kleine .swf-Datei (möglichst < 10 kb) als externen Preloader zu haben, sodass selbst 56k-Modem-Nutzer diese Datei schnell geladen haben. Diese Datei kann dann mithilfe eines FlashVars-Arguments einen externen Film in einer beliebigen Größe, Form und sonstigen Variablen nachladbar ist.

Gleich vorweg : Ganz geschafft habe ich es nicht. Die Framerate ist abhängig vom geladenen Film. Dehalb habe ich 3 verschiedene Preloader angefertigt, die alle für eine spezielle Framerate ausgelegt sind (erkennbar am Namen). Wer noch andere Framerates als diese benutzt, der kann gerne die einge

Hier noch der Code, der das ganze lädt (nix dolles, nur was Neues im Anpassen der Größe ... der Preloader ist quadratisch, da muss der geladene Film erstmal angepasst werden und positioniert werden, da Flash quadratisch in Rechteckig zentriert) :

Code:
// necessary FlashVars : movie (the url of the movie/image to load)
// optional FlashVars : moviewidth (width of movie/image), movieheight (height of movie/image)

if (!_root.movie)
	_root.movie = "images.swf";

var preloaderwidth = _root._width;
var preloaderheight = _root._height;

var loader:MovieClipLoader = new MovieClipLoader();
var listener = new Object();

listener.onLoadStart = function() {
	loading_mc.bar_mc._xscale = 0;
	loading_mc.percentage_txt.text = "0 %";
	container_mc._visible = false;
}
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
	loading_mc.bar_mc._xscale = 100*bytesLoaded / bytesTotal;
	loading_mc.percentage_txt.text = int(100*bytesLoaded / bytesTotal)+" %";
}
listener.onLoadInit = function(target_mc:MovieClip) {
	loading_mc._visible = false;
	container_mc._visible = true;
	
	if (!_root.moviewidth)
		_root.moviewidth = target_mc._width;
	if (!_root.movieheight)
		_root.movieheight = target_mc._height;
	
	var min = Math.min (_root.moviewidth, _root.movieheight);
	var max = Math.max (_root.moviewidth, _root.movieheight);
	var scale = 100 * preloaderwidth / min;
	var position = preloaderwidth * (min - max) / (2*min);
	
	container_mc._xscale = scale;
	container_mc._yscale = scale;
	if (_root.moviewidth > _root.movieheight) {
		container_mc._x = position;
	}
	else {
		container_mc._y = position;
	}
}
loader.addListener( listener);

container_mc.movie_mc._lockroot = true;
loader.loadClip (_root.movie, container_mc.movie_mc);
Das heißt natürlich auch, dass Filme mit eingebetteten Grafiken evtl. nicht Pixel-genau sitzen ... aber das muss man selber am lebenden Beispiel ausprobieren .

Beispiel zur Einbettung in eine HTML :

HTML-Code:
<object type="application/x-shockwave-flash" id="test" name="test"
        data="preloader2_31.swf?movie=test.swf"
        width="550" height="400">
        <param name="movie" value="preloader2_31swf?movie=test.swf" />
        <p>Bitte installieren Sie mindestens FlashPlayer 7 oder schalten Block-Scripts wie NoScript ab.</p>
    </object>
Oder mit der üblichen Flash-Methode :

HTML-Code:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="preloader" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="movie" value="preloader2_31fps.swf?movie=test.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="preloader2_31fps.swf?movie=test.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="preloader" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
Insbesondere :
data="preloader2_31.swf?movie=test.swf"
Wobei test.swf dann ersetzt werden müsste mit dem eigenen Film.

Mmh ... Okay, ich hoffe das war jetzt nicht zu viel Text auf einmal ^^.

Schönen Tag noch,
OlilO
Angehängte Dateien
Dateityp: zip Preloader2.zip (9,3 KB, 34x aufgerufen)
OlilO ist offline   Mit Zitat antworten
Alt 16-01-2008, 19:13   #2 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Ort: Berlin
Beiträge: 4
Nachtrag : Größe und Breite

Noch ein Hinweis zur Benutzung :

Man kann Breite und Größe speziell angeben (für Animationen sinnvoll).

Beispiel :
data = "preloader2_31fps.swf?movie=test.swf&moviewidth=500&movieheight=400"
OlilO ist offline   Mit Zitat antworten
Alt 22-01-2008, 21:07   #3 (permalink)
ewig Neuer User
 
Registriert seit: Jun 2003
Beiträge: 423
Hallo,

ist das mit den Frameraten nötig - ich glaub ich hatte schon mal 15/25fps gemixt ohne Probleme...

Eleganter weise könntest Du die ganzen preloaderobjekte dynamisch erstellen. Das mit der Größe und Position verstehe ich nicht, es sollte doch reichen im HTML-code die Maße zu geben. Die kannst Du dann mit Stage.width Stage.height auslesen und den Preloader generieren/ positionieren. Dann könnte man auch noch ne dynamische Farbe mit übergeben.

ansonsten ist er schön klein

salü
__________________
http://www.a-d-k.de/ nicht gucken!
loetmann ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele