Jpg#s werden im Loader nicht immer scaliert!

DirtyBiker

Mitglied
Hallo,

habe auf meiner eigenen Seite eine kleine Bildergallerie, wo ich Jpg's mit Hilfe von der Loader-Komponente lade, um so kein extra thump-pictures zu erstellen! Er läd sie auch sehr gut, nur beim dem ersten Ladevorgang in den Speicher skaliert er sie nicht alle richtig, einige Bilder werden zu groß dargestellt! Beim 2 Laden haut alles hin! Die Eigenschaft ScaleContent ist bei allen Loadern auf True gesetzt! Diese Fehler passiert aber nur online, unter Flash selber, geht alles bombig!
DEn Fehler kann man hier Online sehen: http://www.thatsmyown.de.ms

Weiß nicht wie ich diesen Fehler weg bekomme, ich hoffe es kann mir jemand helfen!

Vielen Dank!
 

Anhänge

  • 24725attachment.zip
    131,3 KB · Aufrufe: 18
Zuletzt bearbeitet:
Interessantes Thema...
Arbeite noch an ner Antwort, habe auf anhieb keine,
aber ich würde dir, so ganz nebenbei immer raten ein Layout beizubehalten.
Das Grüne WellenDingsBums verschiebt sich am ende der Animation
auf der Y-Achse.

Sieht nett aus...

Gruß,

Mike
 
Ich glaub ich weiß woran es liegt! Und zwar werden die Bilder skaliert bevor sie richtig fertig geladen sind und somit am Ende in voller Größe dargestellt! Die Loader-Komponente müßte bis zum schluss warten und sie erst dann skalieren, nur wann weiß ich wann das Bild fertig geladen ist? "Loader.percentLoad" bleibt irgendwie immer bei 82 stehen!
 
... muss es denn unbedingt diese Komponente sein? Oft kommst Du mit was Eigenem viel schneller und komfortabler zum Ziel.

Gruß
.
 
Nein, natürlich nicht, nur hat sich diese Komponente gerade wegen der skalierung angeboten! Wie könnt ich es noch machen?
 
Beispiel, um ein Bild zu laden und auf eine bestimmte Breite zu skalieren:
Code:
function loadImg(mc:MovieClip, path:String, maxwidth:Number) {
    mc.loadMovie(path);
    this.onEnterFrame = function() {
        var cur = mc.getBytesLoaded();
        var max = mc.getBytesTotal();
        if (cur > 10 && max > 10) {
            var percent = cur * 100 / max;
            if (percent >= 100) reScale(mc, maxwidth);
        }
    }
}

function reScale(mc, maxwidth) {
    delete this.onEnterFrame;
    var r = mc._width / mc._height;
    mc._width = maxwidth;
    mc._height = mc._width / r;
}

loadImg(ein_mc, "bild.jpg", 64);

Gruß
.
 
Sorry, ab so fit bin ich nicht in AS! Meine Programmierzeiten liegen schon lange hinter mir! Wo müssen die Funktionen den genau hin, sind ja glaube Global? Aber von wo werden sie aufgerufen?
Hab mal ein kleine fla. gemacht, haut natürlich nicht hin, aber wie würde es gehen?

Danke!
 

Anhänge

  • 24745attachment.zip
    77,4 KB · Aufrufe: 19
Hi,

Verzichte bitte auf Frames in der Hauptzeitleiste! Damit schaffst Du Dir in der Regel mehr Probleme, als Du u.U. löst. ;) Ein Beispiel findest Du im Anhang - Als Container (Instanznamen nicht vergessen) kannst Du einen leeren MovieClip verwenden.

Achte darauf, dass bei Deiner Variante (Breite und Höhe festlegen) die Bilder u.U. verzerrt werden, wenn das Seitenverhältnis der übergebenen Maße nicht mit dem des Bildes übereinstimmt. Sinvoller ist es meist, nur entweder die Breite oder die Höhe anzugeben, oder für beides bestenfalls einen Maximalwert festzulegen. Auf meiner Seite findest Du einige Galerien, die das in dieser Art umsetzen.

Gruß
.
 

Anhänge

  • 24746attachment.zip
    7,1 KB · Aufrufe: 17
Danke für deie Arbeit! Aber inzwischen hab ich schon wieder an etwas neuen gebastelt! Hab dieses mal mit MC's gearbeitet! Da ich aber ein Gallerie machen möchte sollen ja mehrer Jpg's geladen werden!

Code:
var picture = new Array(9);
for (var i=1; 9; ) {
	picture[i].loadMovie("Bilder/mad/pic"+[i]+".jpg");
	picture[i]._width = 32;
	picture[i]._height = 22;
	ladestatus();
}

Es soll so jedem Mc ein Pfad zum Laden gegeben werden! Hab auch noch ein Preloader eingebaut(der ist glaube auch von Dir), nur ich weiß nicht ober der gleichzeitig den Status der Mc's anzeigen kann?

Code:
ladestatus = function () {
	Laden.onEnterFrame = function() {
		// Geladene und zu ladenede Bytetes abfragen
		geladen = _root.picture1.getBytesLoaded();
		zuladen = _root.picture1.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
			Laden._visible = true;
			// Berechnung der bereits geladenen Prozent
			prozent = Math.round(geladen/zuladen*100);
			// Ausgabe im dynamischen Textfeld "prozentanzeige"
			this.prozentanzeige.text = prozent+" %";
			// 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;
			}
		}
	};
};

Danke

MFG
 
Code:
var picture = new Array(9);
for (var i=1; 9; ) {
	picture[i].loadMovie("Bilder/mad/pic"+[i]+".jpg");
	picture[i]._width = 32;
	picture[i]._height = 22;
	ladestatus();
}
Wie soll das funktionieren, wenn Du keine MovieClips erstellst? "picture[ i ]" ist erstmal "undefined", bis Du (z.B. per createEmptyMovieClip) sie mit MC-Instanzen belegst.

Das von Dir gepostete Preloader-Beispiel ist nicht von mir (von Rena glaub ich) und schon etwas älter. Es ist - ich hoffe, man verzeiht mir das - für Deine Zwecke auch relativ umständlich. Ich würde einen "Thumbail"-MC erstellen, der seine eigene Lade- und Skalierungsroutine mitbringt. Von diesen Clips kannst Du dann beliebig viele instanzieren.

Ich habe ein entsprechendes Beispiel fertig gemacht (mein Code von eben lässt sich ohne größere Änderungen in dieses Setup einbauen) und auskommentiert. :)

Gruß
.
 

Anhänge

  • 24749attachment.zip
    8,5 KB · Aufrufe: 23

Neue Beiträge

Zurück