Bildgrösse Begrenzen

Hi, ok, klar containair war mcbild, aber es passiert dass selbe wie vorhin ich habe zwei Bilder

bild.jpg = 1123x1234 px
bild2.jpg = 1024x768 px

Wenn ich nach bild.jpg bild2.jpg lade, ist bild 2 Kleiner als bild 1.

PHP:
_global.img = this;


_root.mcbild.loadMovie("img/bild.jpg");

_root.onEnterFrame = function() {
    this.mcbild._visible = false; // unsichtbar halten
    if (this.mcbild.getBytesLoaded() > 0 && this.mcbild.getBytesLoaded() >= this.mcbild.getBytesTotal()) {
        // fertig geladen!
        reScale();
    }
}

function reScale() {
	var maxwidth = 100;
	var maxheight = 50;
    delete _root.onEnterFrame;
    var r = _root.mcbild._width / _root.mcbild._height;
    var vr = mcbild._width / maxwidth;
    var hr = mcbild._height / maxheight;
    if (vr > hr) { // An Breite anpassen
    mcbild._width = maxwidth;
    mcbild._height = mcbild._width / r;
    } else { // An Höhe anpassen
    mcbild._height = maxheight;
    mcbild._width = mcbild._height * r;
}
}




function loadimg()
{
	_root.mcbild.loadMovie("img/bild2.jpg");
}
 
... wenn Du ab und zu mal ein Satzzeichen verwenden würdest, wäre folgendes:
was ist der conatainer mcbild
nicht ganz so missverständlich. Ich nehme an, Du meintest: "Und was ist mit "Container" gemeint; etwa mein MC "mcbild?" ... In diesem Fall wäre die Antwort: Ja. ;)

Ich habe eigentlich keine Lust, jetzt zum 1001ten Mal einen Bildloader mit Skalierung anzufertigen und zu posten - der relevante Codeteil steht in meinem vorherigen Posting und lauffähige Implementationen kannst Du den diversen Galerien, Slideshows und Bildlupen auf meiner Seite entnehmen.

Gruß

EDIT (Dein letztes Posting betreffend):
Code:
function loadimg()
{
    _root.mcbild.loadMovie("img/bild2.jpg");
}
Damit führst Du auch lediglich die loadMovie-Methode aus, nicht die Skalierung. Du musst bei jedem neuen Bild, dass Du in den Container lädst, wieder auf das Laden warten und die Maße neu anpassen.

EDIT #2: Man kann eigene Beiträge auch editieren - das spart unerwünschte Mehrfachpostings.
.
 
Also, meinst du in etwa so

PHP:
_global.img = this;

reSize();
_root.mcbild.loadMovie("img/bild.jpg");
function reSize() {
    this.mcbild._visible = false; // unsichtbar halten
    if (this.mcbild.getBytesLoaded() > 0 && this.mcbild.getBytesLoaded() >= this.mcbild.getBytesTotal()) {
        // fertig geladen!
        reScale();
    }
}

function reScale() {
	var maxwidth = 500;
	var maxheight = 55;
    var r = _root.mcbild._width / _root.mcbild._height;
    var vr = _root.mcbild._width / maxwidth;
    var hr = _root.mcbild._height / maxheight;
    if (vr > hr) { // An Breite anpassen
    _root.mcbild._width = maxwidth;
    _root.mcbild._height = _root.mcbild._width / r;
    } else { // An Höhe anpassen
    _root.mcbild._height = maxheight;
    _root.mcbild._width = mcbild._height * r;
}
}




function loadimg()
{
	reSize();
	_root.mcbild.loadMovie("img/bild2.jpg");
}

Jetzt wird dass ereste bild ganz normal dargestellt und dass zweite ist mini mini mini .
 
... ich sehe dort keine onEnterFrame-Methode. :rolleyes:

Ich komm wohl nicht umhin, doch den kompletten Code zu posten:
Code:
var maxw = 640; // maximale Breite
var maxh = 480; // maximale Höhe

function loadAndScale(container, src) {
     var img = container.createEmptyMovieClip("img", 1);
     container._visible = false;
     img.loadMovie(src);
     container.onEnterFrame = function() {
        if (img._width > 0 && img._height > 0) {
            reScale(container);
        }
     }
}

function reScale(container) {
    delete container.onEnterFrame;
    var img = container["img"];
    var r = img._width / img._height;
    var vr = img._width / maxw;
    var hr = img._height / maxh;
    if (vr > hr) {
        img._width = maxw;
        img._height = img._width / r;
    } else {
        img._height = maxh;
        img._width = img._height * r;
    }
    container._visible = true;
}

// Hier kannst Du nun verschiedene Bilder in Deinen
// MovieClip laden, indem Du die Funktion "loadAndScale" aufrufst und ihr
// den Zielclip (mcbild) und den Pfad zum Bild übergibst:

loadAndScale(mcbild, "bild1.jpg");

// und etwas später dann auch:

loadAndScale(mcbild, "bild2.jpg");

Gruß
.
 
:) Vielen Dank, aber habe gerade vorhin was anders gefunden.

Wiso nicht so :

HTML:
onClipEvent(data)
{
	this._width = 504;
	this._height = 323;
}

Funktioniert Wunderbar.

Wiso kopliziert wenn es auch einfach geht :)
 
Naja,

1. musst Du dafür Code auf eine Instanz setzen - da diese Instanz durch die loadMovie-Aktion überschrieben wird, geht das Ereignis ebenfalls perdu.

2. Wird onClipEvent(data) (zumindest laut Referenz) nicht nur nach dem kompletten Laden einer Datei aufgerufen, sondern mehrmals nach bestimmten Abschnitten:
Referenz hat gesagt.:
data - Die Aktion wird ausgeführt, wenn bei einer loadVariables()- oder loadMovie()-Aktion Daten empfangen werden. Bei einer Registrierung mit der Aktion loadVariables() tritt das Ereignis data nur einmal auf, und zwar beim Laden der letzten Variable. Bei einer Registrierung mit der Aktion loadMovie() tritt das Ereignis data wiederholt auf, und zwar beim Abruf der einzelnen Datenabschnitte.

3. Sparst Du Dir damit bestenfalls 2 Zeilen - nämlich die onEnterFrame-Methode. Der größte Teil dieses Scriptes besteht allerdings aus der proportionalen Skalierung des Zielclips. ;)

Gruß
.
 

Neue Beiträge

Zurück