Bilgröße ermitteln

torontohh

Grünschnabel
Hi Volks
In meiner SWF werden jpeg's dynamisch eingeladen. Wie kann ich jetzt in Flash feststellen wie groß das Bild ist. Ziel ist das Bild automatisch zu skalieren. Es darf nicht breiter 480px und nicht höher 280px sein. Es muss aber proportional skaliert werden. Also eine dieser gößen darf nicht überschritten werden.
Ich benutze FlashMX 2004
Gruß und Dank
Rolf
 
Hi,
lade die Bilder in einen MovieClip und über dessen Eigenschaften mc._width und mc._height kannst du dann die Werte ermitteln und verändern..

sancho
 
bilder skalieren

Hallo
Ich habs jetzt tagelang versucht und schaff es nicht. Um zu sehen was passiert, lasse ich mir die widht und height Ergebniise mit trace(mc._width); und
trace(mc._height); anzeigen. Das erste Bild der Galerie hat die werte 0, 0, die nächsten richtig 480*280 und das letzte wird gar nicht angzeigt. Es sieht also so aus das immer gie größen des vorigen Bildes angezeigt werden. Ich habe die progammierung einem Tut hier entnommen und angepasst. Ich habe das trace schon an allen möglichen Stellen eingefügt, komme aber zu keinem Ergebniss.
Ziel ist es. zu große Bilder proportiona zu skalieren.

ausgabe_txt.text = "Lade Daten...";
mein_xml = new XML();
mein_xml.ignoreWhite = true;
mein_xml.load("album02/Bildtitel.xml");
mein_xml.onLoad = function(status) {
if (status) {
daten_xml = this.firstChild.childNodes; // Filmsequenz Erzeugen
createEmptyMovieClip("mc", 1);
// Bild in die Filmsequenz laden
loadMovie(daten_xml[0].attributes.datei, "mc");
trace(mc._width);
trace(mc._height);
// Positionieren
mc._x = -123;
mc._y = -96;
// Textfeld mit Bildnamen
ausgabe_txt.text = daten_xml[0].attributes.titel;
delete mein_xml;
} else {
ausgabe_txt.text = "Fehler!";
}
};

weiter.onRelease = function() {
// Nächstes Bild
if (bild < daten_xml.length - 1) {
bild++;
loadMovie(daten_xml[bild].attributes.datei, "mc");
ausgabe_txt.text = daten_xml[bild].attributes.titel;
trace(mc._width);
trace(mc._height);
}
};

zuruck.onRelease = function() {
// Vorheriges Bild
if (bild > 0) {
bild--;
loadMovie(daten_xml[bild].attributes.datei, "mc");
ausgabe_txt.text = daten_xml[bild].attributes.titel;
trace(mc._width);
trace(mc._height);
}
};


Hilfe

Gruß Rolf
 
PHP:
weiter.onRelease = function() {
  // Nächstes Bild
  if (bild < daten_xml.length - 1) {
    bild++;
    loadMovie(daten_xml[bild].attributes.datei, "mc");
    ausgabe_txt.text = daten_xml[bild].attributes.titel;
    trace(mc._width);
    trace(mc._height);
  }
};

if (bild < daten_xml.length - 1) -> mach mal entweder das -1 weg oder aus dem < ein <= , sonst kannst du das letzte Bild ja gar nicht laden..


Und wegen Höhe und Breite, versuch mal anstatt einem mc der schon auf der Bühne ist, einfach einen per AS, also createEmptyMovieClip(), immer neu zu erstellen und den Alten mit removeMovieClip() wegzuladen. Sollte eigentlich klappen soweit.

Sollte dann so ungefähr aussehen:

PHP:
weiter.onRelease = function() {
  // Nächstes Bild
  if (bild < daten_xml.length) {
    bild++;
    mc.removeMovieClip();
    createEmptyMovieClip("mc",1);
    mc.loadMovie(daten_xml[bild].attributes.datei);
    ausgabe_txt.text = daten_xml[bild].attributes.titel;
    trace(mc._width);
    trace(mc._height);
  }
};

kann die Sachen leider nich testen weil ich die xml Daten nich hab und im moment zu wenig Zeit hab komplett selbst zu bauen, das sollte aber eigenltich funktionieren.

sancho
 
Zuletzt bearbeitet:
Hi
Also das mit dem letzten Bild laden funktioniert schon. Mein Prob ist halt das ich die größe des *.jpeg auslesen möchte. um es skalieren zu können. Nicht >480px breit und/oder nicht >280px hoch. Das schaffe ich nicht mit _width und height.
Gruß Rolf
 
so funktionerts

Hallo
Ich habe es jetzt hinbekommen
Das Bild wird prop. scaliert und zentriert in dem Bereich (nicht Bühne) dargestellt.

albumStart("album01/Bildtitel.xml")

function albumStart(path){
ausgabe_txt.text = "Lade Daten...";
mein_xml = new XML();
mein_xml.ignoreWhite = true;
mein_xml.load(path);
mein_xml.onLoad = function(status) {
if (status) {
bild = 0;
daten_xml = this.firstChild.childNodes;
// Filmsequenz Erzeugen
createEmptyMovieClip("mc", 1);
// Bild in die Filmsequenz laden
showPictures(0);
delete mein_xml;
} else {
ausgabe_txt.text = "Fehler!";
}
};
}
weiter.onRelease = function() {
// Nächstes Bild
if (bild<daten_xml.length-1) {
bild++;
this._parent.mc._xscale = 100;
this._parent.mc._yscale = 100;
showPictures(bild);
}
};
zuruck.onRelease = function() {
// Vorheriges Bild
if (bild>0) {
bild--;
this._parent.mc._xscale = 100;
this._parent.mc._yscale = 100;
showPictures(bild);
}
};
function showPictures(bild) {
createEmptyMovieClip("control", 2);
loadMovie(daten_xml[bild].attributes.datei, "mc");
control.onEnterFrame = function() {
if ((this._parent.mc.getBytesLoaded() == this._parent.mc.getBytesTotal()) && this._parent.mc.getBytesTotal()>12) {
faktor = 100;
this._parent.mc._x = -123;
this._parent.mc._y = -96;
if (this._parent.mc._width>480 || this._parent.mc._height>280) {
if ((480/this._parent.mc._width)<280/this._parent.mc._height) {
faktor = (480/this._parent.mc._width)*100;
} else {
faktor = (280/this._parent.mc._height)*100;
}
this._parent.mc._xscale = faktor;
this._parent.mc._yscale = faktor;
}
this._parent.mc._x = -123 + ((480-this._parent.mc._width)/2);
this._parent.mc._y = -96 + ((280-this._parent.mc._height)/2)

delete this.onEnterFrame;
removeMovieClip(this.control);
}
}
ausgabe_txt.text = daten_xml[bild].attributes.titel;
}


Danke an alle die geholfen haben.
Gruß Rolf
 
Zurück