Autor |
Nachricht |
Krisslinger
Threadersteller
Dabei seit: 21.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 04.06.2008 17:00
Titel Bilder unterschiedlicher Größe mit XML in Flash laden |
|
|
Hey,
wie mein Titel schon sagt, würde ich gerne mehrere Bilder (Hoch- und Querformat, unterschiedliche Größen) in eine Galerie laden. Die Breite sollte immer fest sein, die Höhe muss demenstprechend varieren. Alle Bilder sollen am Ende untereinander stehen, bündig zum vorigen.
Hab mir jetzt schon verschiedene Threads angeschaut, unter anderem das Tutorial von FlamingArt und einige Videos auf gotoandlearn.com Allerdings haben bei allen die Bilder ne feste Größe und können so in einen Movieclip fester Größe geladen werden.
Bei FlamingArts Tutorial sind die Größen der Bilder und deren Position im XML Dokument angegeben, dh aber ich müsste dann für jedes Bild extra die y-Position ausrechnen. Lässt sich das auch einfacher lösen, dass ich nur die Bilder in der XML Datei angebe und Flash die abhängig von der Höhe untereinander richtig plaziert?
Wär cool wenn mir jemand nen Ansatz hätte, die XML Sache ist noch sehr jungfräulich.
Vielen Dank
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Mi 04.06.2008 17:05
Titel
|
|
|
Schau Dir mal den MovieClipLoader an. Dann definierst Du dir eine Breite.
Wenn du jetzt ein Bild geladen hast, setzt Du das bild auf diese Breite mit Bild._width.
Die höhe kriegst du dann ganz einfach mit Bild._yscale = Bild._xscale
Oder hab ich dein Problem jetzt falsch vertanden ?
|
|
|
|
|
Anzeige
|
|
|
Krisslinger
Threadersteller
Dabei seit: 21.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 04.06.2008 19:37
Titel
|
|
|
Ich glaube du hast die Frage richtig verstanden, allerdings versteh ich die Antwort nicht genau.
Ich habe es so verstanden, dass ich die Bilder mittels XML in einen MovieClip lade, dann lade ich den MovieClip mit der definierten Breite mit dem MovieClipLoader und pass mit bild._yscale = bild.xscale die Höhe an.
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Do 05.06.2008 01:12
Titel
|
|
|
Nein pass up.
Du gehst als erstes hin, und lädst die XML-Daten. Wie in dem Tut was ich hier mal gepostet hab. Dann erzeuge ich ja in diesem Tut leere MovieClips, in die ich die Bilder, deren Infos ich auch der XML hab, per MovieClipLoader reinlade. Das machst Du auch alles
Im onLoadInit-Event des MovieClipLoaders gehst Du dann einfach hin und sagst dem Bild, wie breit es sein soll. Sagen wir mal, 250px.
Code: | Loader.onLoadInit = function(zielclip:MovieClip){
zielclip._width = 250;
} |
Jetzt hast Du schonmal alle Bilder in 250px breite. Sieht aber eigentlich auch scheisse aus, weil der ja jetzt das Bild verzerrt hat. Also muss Du ihm quasi sagen "Mach das Bild im selben Skalierungsverhältniss hoch wie es breit ist", sprich die Y-Skalierung muss gleich der X-Skalierung sein.
Code: | Loader.onLoadInit = function(zielclip:MovieClip){
zielclip._width = 250;
zielclip._yscale = zielclip._xscale
} |
|
|
|
|
|
Krisslinger
Threadersteller
Dabei seit: 21.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 05.06.2008 13:19
Titel
|
|
|
So, sitz jetzt schon den ganzen morgen drann und versuch das auf die Reihe zu bekommen, leider erfolglos. Leider versteh ich einen größeren Teil von Flamings Tutorial nicht richtig. Da ist glaub ich, einiges an Zeugs drin, das ich nicht brauche für meinen Fall Außerdem würd ich das ganze Ding gern verstehen, und da sind manche Kommentare einfach zu knapp. Nur kopieren und die Bilder austauschen bringt mir nicht viel, irgendwann will ich es auch selber können. Bin leider noch recht frisch in ActionScript.
Bei meinem ersten Post hab ich ja auch das XML Tutorial von gotoandlearn.com erwähnt. Das kann ich auch nachvollziehen und bei mir klappt das reinladen per XML auch, allerdings mit dem Unterschied, dass der Autor des Tutorials lauter Bilder von fester Größe nimmt, und deswegen einfach auf der Bühne einen MovieClip erstellen kann in den er mit
Code: |
instanzname_movieclip.loadMovie(urls[0]);
|
die Bilder reinladen kann.
Im ganzen sieht das so aus und das hab ich auch vor mir liegen:
Code: |
var sp:XML = new XML();
sp.ignoreWhite = true;
var urls:Array = new Array();
sp.onLoad = function() {
var bilder:Array = this.firstChild.childNodes;
for(i=0; i<bilder.length; i++) {
urls.push(bilder[i].attributes.url);
}
instanzname_movieclip.loadMovie(urls[0]);
}
sp.load("sp.xml");
|
Wie gesagt, werden in der oben genannten Zeile die Bilder in den vorhandenen MovieClip geladen. Wie schaffe ich es jetzt, diese Zeile so zu ersetzen, dass er mir für jedes Bild einen neuen MovieClip macht, das entsprechende Bild reinläd und die dann schön untereinander setzt?
Hier auch die XML, der Vollständigkeit halber:
Code: |
<?xml version="1.0" encoding="utf-8"?>
<slideshow>
<photo url="bild_1.jpg" />
<photo url="bild_2.jpg" />
<photo url="bild_3.jpg" />
<photo url="bild_4.jpg" />
<photo url="bild_5.jpg" />
<photo url="bild_6.jpg" />
</slideshow>
|
Vielen Dank
Zuletzt bearbeitet von Krisslinger am Do 05.06.2008 13:24, insgesamt 2-mal bearbeitet
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Do 05.06.2008 13:39
Titel
|
|
|
Code: | var loader:MovieClipLoader = new MovieClipLoader()
var listener:Object = new Object()
var pointer:Number = 0;
var urls:Array = new Array();
var sp:XML = new XML();
var ref:MovieClip = this;
sp.ignoreWhite = true;
sp.onLoad = function() {
var bilder:Array = this.firstChild.childNodes;
for(i=0; i<bilder.length; i++) {
urls.push(bilder[i].attributes.url);
}
loadImage();
}
listener.onLoadInit = function(tgt:MovieClip){
var lastImage:MovieClip = ref["bild" + (pointer-1)];
tgt._y = lastImage._y + lastImage._height;
pointer++;
if(pointer < urls.length){
loadImage()
}
}
var loadImage:Function = function():Void {
var bild:MovieClip = ref.createEmptyMovieClip("bild" + pointer, ref.getNextHighestDepth());
loader.loadClip(urls[pointer], bild);
}
loader.addListener(listener);
sp.load("sp.xml"); |
|
|
|
|
|
Krisslinger
Threadersteller
Dabei seit: 21.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 05.06.2008 14:00
Titel
|
|
|
Vielen Dank, funktioniert
Du hast mir diese und kommende Woche gerettet. Damit bist du für mindestens diesen Zeitraum mein Held. Allerdings nur rein platonisch und ohne Hintergedanken.
Einfach ne super Leistung die manche hier im Forum bringen. Ich schätze euch und eure Hilfe
|
|
|
|
|
CoolGirl
Dabei seit: 09.09.2010
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 09.09.2010 18:43
Titel
|
|
|
Hallo phiHochZwei,
Deine Lösung finde ich auch klasse, war genau das, wonach ich verzweifelt gesucht habe! Nun möchte ich diese Gallerie aber in ein AS3-Projekt einbauen. Habe aber AS1/AS2 nicht darauf
Könntest du mir aushelfen und deinen Code in AS3 übersetzen? Das wäre sooo eine große Hilfe
Bitte.... bitte ... danke !!
Lieben Gruß
Loan
|
|
|
|
|
|
|
|
Ähnliche Themen |
Flash CS5 - Bilder aus externe Datei laden
Zufällig externe Bilder in Flash laden
Flash: Bilder (jpg) via XML laden, preloaden, anzeigen
[Flash] Zufälliges Video und wie am besten Bilder laden?
HILFE! Externen Text und externe Bilder laden in Flash
[Flash,Swish] von Flash aus eine bestimmte Scene,Frame Laden
|
|