Bildgrösse Begrenzen

DelphiDell

Erfahrenes Mitglied
Hallo, zusammen

Ich lade wie folgt ein Bild in ein MovieClip

HTML:
_root.mcbild.loadMovie(["img/bild.jpg"],_root.mcbild);

Wie kann ich jetzt die Bildgrösse Begerenzen,

also wenn ein bild 1000x1000 gross ist dass das bild dann nur 600x600 gross ist.
 
Hi,

indem Du wartest, bis das Bild komplett geladen ist, und es dann skalierst. Beispiel:
Code:
// was sollten die eckigen Klammern dort?
// zudem: Wird loadMovie als Methode eines
// MovieClips ausgeführt, gibt es keinen
// zweiten Parameter. ;)
_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() {
    delete _root.onEnterFrame;
    var r = _root.mcbild._width / _root.mcbild._height;
    _root.mcbild._width = 600;
    _root.mcbild._height = _root.mcbild._width / r;
    _root.mcbild._visible = true; // sichtbar!
}

Gruß
.
 
Hi,

dann poste bitte mal Deine Datei. :)

Ich habe diesen Code ohne Kentnisse über Deine Struktur verfasst, daher ist es gut möglich, dass er an der Stelle, an der Du ihn eingefügt hat, nicht funktioniert. ... war auch eher als Denkanstoß und weniger als Copy&Paste-Futter gedacht. ;)

Gruß
.
 
Hi,

sorry, das war sogar mein Fehler. Der Abschnitt
Code:
& this.mcbild.getBytesLoaded() > this.mcbild.getBytesTotal()
muss eigentlich so lauten:
Code:
& this.mcbild.getBytesLoaded() >= this.mcbild.getBytesTotal()

Gruß
.
 
Hi, es funktioniert.

Wenn du noch so nett wärest könntest du mier dess Scipt noch ein wenig erklären, denn bei Copy and Past lern man leider nichts.
 
Hi, Sorry dass ist eigentlich nicht die Funktion die Ich haben wollte :schäm:

Genaue Erklärung:

Ich habe ein mc namens mcbild und ich möchte einfach dass mein bild darein gepresst wird egal wie gross. Ich galaube dem sagt man "stretch"(in delphi);
 
Hi,

wenn Du einen Film/ein Bild in einen MC lädst, kannst Du die bisherige Größe dieses MCs nicht verwenden, da dessen gesamter Inhalt überschrieben wird. Du kannst Dir allerdings bestimmte Maximalmaße oder einen Rahmen festlegen, auf die/den Du den geladenen Inhalt skalierst.

Vorgehensweise:
  • auf das Laden per onEnterFrame warten

  • wenn das Bild komplett geladen ist, Seitenverhältnis (Breite / Höhe) speichern:
Code:
var r = container._width / container._height;
  • Dann testest Du, ob der Clip eher seitlich oder eher vertikal "übersteht" (genauer gesagt: Test, ob der Quotient aus Bildbreite und Maximalbreite größer ist als der aus Bildhöhe und Maximalhöhe):
Code:
var vr = container._width / maxwidth;
var hr = container._height / maxheight;
if (vr > hr) { // An Breite anpassen
    container._width = maxwidth;
    container._height = container._width / r;
} else { // An Höhe anpassen
    container_height = maxheight;
    container._width = container._height * r;
}
  • Dadurch ist Dein Bild immer komplett im "Rahmen" sichtbar, auch wenn es ein anderes Seitenverhältnis als durch Deine Maximalmaße angegeben hat.

Gruß
.
 

Neue Beiträge

Zurück