Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-08-2005, 14:47   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 29
JPEG - Liste aus Array: Skalieren der Bilder

Hallo!

Aus einem Array mit URLs zu Bildern (Jpegs) lasse ich von Flash eine Liste mit Vorschaubildern erstellen. Leider sind durch unterschiedliche Original-Bildgrößen auch alle Vorschau-Bilder unterschiedlich gross ...
Was kann ich tun, um alle Bilder auf eine Größe zu skalieren, z.B. alle auf eine Breite von 30 Pixeln?
Was ich weiss: man kann die Größe der Jpegs erst dann abfragen, wenn diese von Flash geladen wurden. Aber wie stelle ich das an?
Habe schon das Forum durchwühlt, bin aber offensichtlich zu doof, die Tipps auf meinen Zweck umzuschreiben ...

Vielen Dank für Eure Hilfe!

Tobias Franz

Hier der (Auschschnitt) aus meiner AS:
ActionScript:
  1. // "dokument" ist ein Array mit den URLs zu verschieden großen JPEG-Bildern
  2.     //Erzeugen einer Liste mit Dummy-Feldern
  3. var holder = this.createEmptyMovieClip('holder', 10);
  4. var dummy = holder.createEmptyMovieClip('dummy', 0);
  5.     // Platziert die Liste
  6. holder._x = 105;
  7. holder._y = 25;
  8. var zaehler = 0;
  9.     // Für jedes JPEG der Liste wird ein eigener Container produziert
  10. for (var i = 0; i<dokument.length; i++) { // Anzahl der Files/ Größe des Arrays
  11.        
  12.     // An den Dummy wird ein container angefügt
  13.     var container = holder.dummy.attachMovie('container', 'mc'+(i*10)+1, (i*10)+1);
  14.     zaehler++;
  15.     container._x = 0; //Plazieren des Containers
  16.     container._y = zaehler*60;   
  17.     container.loadMovie(dokument[i]); //Laden des JPEGS in den Container   
  18.  
  19. // ##### WIE KANN ICH DAS BILD SO SKALIEREN, DASS ES IMMER z.B. 30 Pixel breit ist??       
  20.     container._xscale = 10//Skalieren des JPEGS
  21.     container._yscale = 10// Ergebnis: je nach Bildgröße unterschiedlich   
  22.         }
  23.     }
  24. };
tfranz ist offline   Mit Zitat antworten
Alt 27-08-2005, 15:11   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
ActionScript:
  1. for (var i = 0; i<dokument.length; i++) {
  2.     var mc = this.holder.createEmptyMovieClip("loader"+i, i);
  3.     var mc1 = this.holder.createEmptyMovieClip("watcher"+i, 100+i);
  4.     mc.loadMovie(dokument[i]);
  5.     mc1.id = i;
  6.     mc1.onEnterFrame = function() {
  7.         if (this._parent["loader"+this.id]._width>0) {
  8.             var mc = this._parent["loader"+this.id];
  9.             mc._x = (this.id%4)*40;
  10.             mc._y = Math.floor(this.id/4)*40;
  11.             if (mc._width>mc._height) {
  12.                 mc._width=30, mc._yscale=mc._xscale;
  13.                 mc._y += (30-mc._height)/2;
  14.             } else {
  15.                 mc._height=30, mc._xscale=mc._yscale;
  16.                 mc._x += (30-mc._width)/2;
  17.             }
  18.             mc.onRelease = function() {
  19.                 //mach was
  20.             };
  21.             mc.onRollOver = function() {
  22.                 //mach was
  23.             };
  24.             mc.onRollOut = mc.onDragOut=function () {
  25.                 //mach was
  26.             };
  27.             removeMovieClip(this);
  28.         }
  29.     };
  30. }

edit: Mach was draus - und willkommen im Forum...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (27-08-2005 um 15:13 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 27-08-2005, 16:07   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 29
Danke erstmal für die Hilfe! :-)

... bekomme es aber irgendwie nicht gebacken - bin offensichtlich an meine Grenzen geraten ... :-)

Habe mal meine bisherige Arbeit dazugepackt - habe ich da noch irgendeinen Denkfehler drin?

Zip-Datei (Fla, SWF, PHP, + Beispielbilder)

Werde mich weiter bemühen ...
tfranz ist offline   Mit Zitat antworten
Alt 27-08-2005, 16:22   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo nochmal.
Also, wenn die Bildnamen bei dir über loadVars() ankommen, dann geht das doch so, wie ich's dir geschrieben habe. Hier mal ein Beispiel mit einem "festen" Array:
ActionScript:
  1. dokument = ["01.jpg", "02.jpg", "03.jpg", "04.jpg", "05.jpg"];
  2. var holder = this.createEmptyMovieClip("holder", 1);
  3. for (var i = 0; i<dokument.length; i++) {
  4.     var mc = this.holder.createEmptyMovieClip("loader"+i, i);
  5.     var mc1 = this.holder.createEmptyMovieClip("watcher"+i, 100+i);
  6.     mc.loadMovie(dokument[i]);
  7.     mc1.id = i;
  8.     mc1.onEnterFrame = function() {
  9.         if (this._parent["loader"+this.id]._width>0) {
  10.             var mc = this._parent["loader"+this.id];
  11.             mc._x = (this.id%4)*40;
  12.             mc._y = Math.floor(this.id/4)*40;
  13.             if (mc._width>mc._height) {
  14.                 mc._width=30, mc._yscale=mc._xscale;
  15.                 mc._y += (30-mc._height)/2;
  16.             } else {
  17.                 mc._height=30, mc._xscale=mc._yscale;
  18.                 mc._x += (30-mc._width)/2;
  19.             }
  20.             mc.onRelease = function() {
  21.                 trace(this._name)
  22.             };
  23.             mc.onRollOver = function() {
  24.                 this._alpha =60
  25.             };
  26.             mc.onRollOut = mc.onDragOut=function () {
  27.                 this._alpha =100
  28.             };
  29.             removeMovieClip(this);
  30.         }
  31.     };
  32. }
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 27-08-2005, 16:38   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 29
... hm ... stimmt ...
Mit einem festen Array klappt es.
Aber warum dann nicht per LoadVars?

ActionScript:
  1. var directory = new LoadVars();
  2. //Pfad zum Ordner 
  3. directory.db_pfad = "./db/";
  4. //Abrufen und Empfangen des Inhaltsverzeichnis
  5. directory.sendAndLoad("./list.php", directory, "POST");
  6. directory.onLoad = function() {
  7.     directory.liste = directory.liste.toLowerCase();
  8.     //Teilen des Inhaltsverzeichnis in Arrays
  9.     textbox.text = directory.liste;
  10.     dokument = directory.liste.split("|");
  11. }

... hat meiner Meinung nach das gleiche Ergebnis wie:
ActionScript:
  1. dokument = ["./db/bild-1.jpg", "./db/bild-2.jpg", "./db/bild-3.jpg"];

Sofern das PHP mitspielt. Und das tut es ja ...

???
tfranz ist offline   Mit Zitat antworten
Alt 27-08-2005, 16:42   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
ActionScript:
  1. var directory = new LoadVars();
  2. //Pfad zum Ordner
  3. directory.db_pfad = "./db/";
  4. //Abrufen und Empfangen des Inhaltsverzeichnis
  5. directory.sendAndLoad("./list.php", directory, "POST");
  6. directory.onLoad = function() {
  7.         directory.liste = directory.liste.toLowerCase();
  8.         //Teilen des Inhaltsverzeichnis in Arrays
  9.         textbox.text = directory.liste;
  10.         dokument = directory.liste.split("|");
  11. thumbs()
  12. }
Und dann eben noch eine funktion:
ActionScript:
  1. function thumbs() {
  2.     var holder = this.createEmptyMovieClip("holder", 1);
  3.     for (var i = 0; i<dokument.length; i++) {
  4.         var mc = this.holder.createEmptyMovieClip("loader"+i, i);
  5.         var mc1 = this.holder.createEmptyMovieClip("watcher"+i, 100+i);
  6.         mc.loadMovie(dokument[i]);
  7.         mc1.id = i;
  8.         mc1.onEnterFrame = function() {
  9.             if (this._parent["loader"+this.id]._width>0) {
  10.                 var mc = this._parent["loader"+this.id];
  11.                 mc._x = (this.id%4)*40;
  12.                 mc._y = Math.floor(this.id/4)*40;
  13.                 if (mc._width>mc._height) {
  14.                     mc._width=30, mc._yscale=mc._xscale;
  15.                     mc._y += (30-mc._height)/2;
  16.                 } else {
  17.                     mc._height=30, mc._xscale=mc._yscale;
  18.                     mc._x += (30-mc._width)/2;
  19.                 }
  20.                 mc.onRelease = function() {
  21.                     trace(this._name);
  22.                 };
  23.                 mc.onRollOver = function() {
  24.                     this._alpha = 60;
  25.                 };
  26.                 mc.onRollOut = mc.onDragOut=function () {
  27.                     this._alpha = 100;
  28.                 };
  29.                 removeMovieClip(this);
  30.             }
  31.         };
  32.     }
  33. }
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 27-08-2005, 16:57   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 29
JAAAAAA!!!

Es hat endlich funktioniert!! :-))

VIELEN DANK!!!


Nur für die Nachwelt - falls es jemanden interessieren sollte:
ActionScript:
  1. var directory = new LoadVars();
  2. //Pfad zum Ordner
  3. directory.db_pfad = "./db/";
  4. //Abrufen und Empfangen des Inhaltsverzeichnis
  5. directory.sendAndLoad("./list.php", directory, "POST");
  6. directory.onLoad = function() {
  7.     directory.liste = directory.liste.toLowerCase();
  8.     //Teilen des Inhaltsverzeichnis in Arrays
  9.     dokument = directory.liste.split("|");
  10.     thumbs();
  11. };
  12. function thumbs() {
  13.     var holder = this.createEmptyMovieClip("holder", 1);
  14.     for (var i = 0; i<dokument.length; i++) {
  15.         textbox.text +=dokument[i]
  16.         if ((dokument[i].indexOf(".jpg")>0) || (dokument[i].indexOf(".jpeg")>0)) {
  17.             var mc = this.holder.createEmptyMovieClip("loader"+i, i);
  18.             var mc1 = this.holder.createEmptyMovieClip("watcher"+i, 100+i);
  19.             mc.loadMovie(directory.db_pfad+dokument[i]);
  20.             mc1.id = i;
  21.             mc1.onEnterFrame = function() {
  22.                 if (this._parent["loader"+this.id]._width>0) {
  23.                     var mc = this._parent["loader"+this.id];
  24.                     mc._y = (this.id%4)*40;
  25.                     mc._x = Math.floor(this.id/4)*40;
  26.                     if (mc._width>mc._height) {
  27.                         mc._width=50, mc._yscale=mc._xscale;
  28.                         mc._y += (50-mc._height)/2;
  29.                     } else {
  30.                         mc._height=50, mc._xscale=mc._yscale;
  31.                         mc._x += (50-mc._width)/2;
  32.                     }
  33.                     mc.onRelease = function() {
  34.                         trace(this._name);
  35.                     };
  36.                     mc.onRollOver = function() {
  37.                         this._alpha = 60;
  38.                     };
  39.                     mc.onRollOut = mc.onDragOut=function () {
  40.                         this._alpha = 100;
  41.                     };
  42.                     removeMovieClip(this);
  43.                 }
  44.             };
  45.         }
  46.     }
  47. }
tfranz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele