Größe eines Bildes auslesen

Guten Tag,

ich will die größe eines Bildes auslesen und dann den MC auf die Größe anpassen, das mit dem anpassen ist ja kein Problem, aber ich weiß nicht wie ich die Größe sprich Höhe und Breite vom Bild auslese.

Hat jemand da mal ein Tipp oder so? :D


mfg
 
Die größe von einem externen oder internen Bild? Wird es per loadMovie o.ä. eingeladen oder ist es in die swf eingebunden?
 
Hi,

also die Größe eines MC´s kann man ja mit [MC_Name]._width (Breite) und [MC_Name]._height (Höhe)

Folglich mach ich das immer so:

1. Ich lade das Bild in einen MovieClip:
Code:
//Leeren MovieClip erzeugen:
this.createEmptyMovieClip("container", 1);

//Bild in den leeren MovieClip einladen:
container.loadMovie("Bild.jpg");

2. Als nächstes frage ich die größe ab:
Code:
var breite;
var hoehe;

this.onEnterFrame = function(){

     //Bildmaße abfragen
     breite = container._width;
     hoehe = container._height;
}

3. Ich habe nun die Bildmaße und kann diese dementsprechend angleich (z.B. an die FlashDokumentgröße, somit erweitere ich die Funktion onEnterFrame: ).
Code:
this.onEnterFrame = function(){

     //Bildmaße abfragen
     breite = container._width;
     hoehe = container._height;
     
     //Dokumentgröße abfragen
     container._width = stage.width;
     container._height = stage.height;

     container._x = 0;
     container._y = 0;
}


MfG:
General ']['.G.
 
Zuletzt bearbeitet:
Also ich habs mal so versucht, aber wenn ich mit trace mir die hoehe und breite ausgeben lassen will kommt "undefined", also scheint es wohl nicht zu klappen.

Irgendwo is da ein Fehler denk ich mal oder ich setzt es falsch um, was ich aber eher nich denke.
 
Hi,

1. Die Maße stehen erst zur Verfügung, wenn das Bild komplett eingeladen wurde.

2. Von daher ist eine onEnterFrame-Methode schon mal nicht verkehrt, denn damit kannst Du darauf warten, bis das Bild komplett geladen ist.

3. Es macht allerdings keinen Sinn, die Maße in dieser onEnterFrame-Methode kontinuierlich abzufragen, da sie so lange keinen Wert zurückgeben, bis der Ladevorgang abgeschlossen ist. Zudem sollte die Methode dann auch beendet werden.

4. Am einfachsten geht das wohl mit dem MovieClipLoader:
Code:
var container = this.createEmptyMovieClip("container", 1);

var mcl = new MovieClipLoader();

mcl.onLoadInit = function() {
  trace(container._width + ", " + container._height);
  // Hier sollten die Maße korrekt ausgegeben werden!
}

mcl.loadClip("bild.jpg", container");

Gruß
.
 
Hmm das versteh ich nicht ganz, du erstellst erst den MC und dann lädst du das Bild rein wenn ich das richtig sehe. Dazwischen lässt du dir die größe ausgeben aber das geht doch nicht oder ? oO

Weil der MC doch leer ist und so keine Größe haben sollte sondern erst wenn ein Bild drin ist oder bin ich so ein Flash Anfänger? ^^
 
Nicht alles, was zwischen zwei Zeilen steht, wird auch dazwischen ausgeführt. ;) Hier handelt es sich um den onLoadInit-Listener der MovieClipLoader-Klasse, der erst ausgeführt wird, wenn die Datei komplett geladen ist (sprich: die Funktion "mcl.onLoadInit" wird erst aufgerufen, wenn der Ladevorgang abgeschlossen ist).

Ein weiteres Beispiel:
Code:
function foo() {
  clearInterval(iv);
  trace("foo");
}

var iv = setInterval(this, "foo", 100);

trace("Hallo");
Es wird nicht erst "foo" und dann "Hallo" ausgegeben, sondern sofort "Hallo" und nach 100 Millisekunden dann "foo", da es sich hierbei um eine Funktion handelt, die per Intervall aufgerufen wird.

Gruß
.
 
Zurück