1Danke
ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
694
694
EMPFEHLEN
-
10.03.10 12:23 #1
- Registriert seit
- Oct 2009
- Beiträge
- 50
Hallo Leute,
ich habe bei meiner Flashslideshow das Problem, dass die Bilder immer an die Größe des Flashfensters angepasst werden.
Dabei gehen allerdings Seitenverhältnisse und Proportionen verloren. Wie kann ich dafür sorgen, dass dies nicht so ist?
Hier der Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
import mx.transitions.*; //Diesen Code am anfang der Skriptes setzen Stage.scaleMode = "noScale"; Stage.align = "TL"; //leeren MC erstellen this.createEmptyMovieClip("con",1); //zuerst transparent setzen this.con._alpha = 0; //Zähler var index:Number = 0; //Liste der Bilder var urls:Array = new Array("(1).jpg", "(2).jpg", "(3).jpg", "(4).jpg", "(5).jpg", "(6).jpg", "(7).jpg", "(8).jpg", "(9).jpg", "(10).jpg", "(11).jpg", "(12).jpg"); //Anzahl der Bilder ermitteln über Länge des Arrays var len:Number = urls.length; //5 Sekunde = 5000 Millisekunden Pause zwischen den Bildern var pause:Number = 5000; var o:Object = new Object(); Stage.addListener(o); o.onResize = function() { bg._x = Stage.width/2; bg._y = Stage.height/2; con._x = Stage.width/2-con._width/2; con._y = Stage.height/2-con._height/2; setBackgroundSize(); }; o.onResize(); /** *Das Hintergundbild soll das gesamten Browserfenster einnehmen */ function setBackgroundSize() { var p:Number; if (bg._width<Stage.width) { p = Stage.width/bg._width; bg._width = Stage.width; bg._height *= p; } if (bg._height<Stage.height) { p = Stage.height/bg._height; bg._height = Stage.height; bg._width *= p; } } function startLoader(){ //Lauscher und MovieClipLoader-Instanz erstellen _root.mclListener = new Object(); _root.mcLoader = new MovieClipLoader(); _root.mcLoader.addListener(_root.mclListener); //und das erste Bild laden _root.mcLoader.loadClip("..."+_root.urls[index], _root.con); //Bild ist geladen und MC wurde befüllt: mclListener.onLoadInit = function(mc:MovieClip) { trace("fertig, beladen wurde "+mc); //MC Skalieren mc._width = Stage.width; mc._height = Stage.height; //MC auf die Bühnen-Mitte setzen: mc._x = int((Stage.width - mc._width)/2); mc._y = int((Stage.height - mc._height)/2); _root.fader(mc,true); } } function fader(mc,blende){ //mc ist das ein- oder auszublendende Objekt //blende ist true oder false, d.h. blendet ein oder aus if(blende){ //einblenden von alpha=0 bis alpha=100 in 0,6 Sekunden var tw1:Tween = new Tween(mc, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, 0.6, true); tw1.onMotionFinished = function() {//wenn ausblenden beendet... _root.meineID = setInterval(_root,"weiter",_root.pause);//5 Sek Pause } } else{//ausblenden var tw2:Tween = new Tween(mc, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 0.6, true); tw2.onMotionFinished = function() {//wenn ausblenden beendet... _root.folgefilm();//nächsten Film laden und einblenden } } } //Intervall ist beendet function weiter(){ trace("Pause beendet"); //Intervall wieder löschen clearInterval(_root.meineID); //aktuelles Bild ausblenden _root.fader(_root.con,false); } function folgefilm(){ trace("folgefilm"); _root.index++; //checken, ob das letzte Bild erreicht wurde if(_root.index == _root.len){ //letztes Bild wurde gezeigt, wieder mit dem ersten Bild starten = Loop _root.index = 0; } _root.mcLoader.loadClip("..."+_root.urls[index], _root.con); } startLoader(); this.stop();
Vielen Dank
-
Warum skalierst du nich einfach immer nur die Breite? Du wirdst dann jedoch bei Hochkantbildern das problem haben, das Sie über die Bühne/Stage hinausgehen. Aber dann richtest du diese halt aus. Wenn du beide Seiten anpasst wird er Sie immer verzerren.
Online Portfolio - www.innographix.de
-
10.03.10 15:31 #3
- Registriert seit
- Oct 2009
- Beiträge
- 50
Sorry....
So fit bin ich dann doch nicht. Wie stelle ich sowas an?
Danke!
-
Probier das mal bin mir aber nicht sicher:
Code :1 2 3 4 5 6
o.onResize = function() { bg._x = Stage.width/2; con._x = Stage.width/2-con._width/2; setBackgroundSize(); }; o.onResize();Online Portfolio - www.innographix.de
-
10.03.10 18:14 #5
- Registriert seit
- Oct 2009
- Beiträge
- 50
Mir ist noch mehr aufgefallen! Einen weiter runter!
Hat leider nicht funktioniert. Trotzdem DANKE.
Mir ist noch aufgefallen, dass das Problem eigentlich nur bei Hochkantfotos auftritt, da kein Platz links und rechts gelassen wird.
Wenn ich das ausprobiere werden die Bilder zwar scharf aber sie sind auch größer als die Bphne. Somit kann man nicht alles sehen. Vielleicht hilft das.
Nach dem Anlernen von AS2 (mittels AS2 Referenzhandbuch) und dem darauf folgendem Frust, dass das alles nicht so will wie ich, habe ich zumindest logisch (ohne Code) einen Lösungsvorschlag gefunden.
Wenn ihr mir vielleicht sagen könntet, ob diese Idee machbar ist, wäre ich euch sehr dankbar.
Meine Idee ist wie folgt:
Ich möchte, dass jedes Bild solange skaliert wird bis die Höhe des Bildes der Höhe des MCs entspricht. Diese Skalierung soll, wie bei den folgenden auch proportional geschehen. Nach der Faustregel, dass Breite durch Höhe immer 1,33 ergeben muss.
Wenn nach dieser ersten Skalierung das Bild eine größere (kleiner ist egal) Breite als der MC aufweist, dann soll das Bild nach der gleichen Skalierungstechnik auf die Breite des MCs gebracht werden.
Nehmt bitte zu Kenntnis, dass ich immer „in PHP denke“. Ich weiß also nicht ob das oben genannte auch mit AS2 möglich ist.
Hoffentlich weiß irgendwer einen Rat. Ich weiß gar nicht mehr weiter und bin kurz davor nochmals ganz von vorne anzufangen (wofür ich aber eigentlich keine Zeit habe).
Vielen DankGeändert von Jens B. (20.03.10 um 01:36 Uhr)
-
Schau dir doch mal den Code an, den du da benutzt. Offensichtlich ist er nicht von dir aber wenigstens die Kommentare kann man lesen. Hier das ist in der Funktion startLoader:
Code :1 2 3
//MC Skalieren mc._width = Stage.width; mc._height = Stage.height;
Jetzt musst du also sehen, wie groß die Bilder sein sollen. Wenn die zwar so groß wie möglich, aber auf jeden Fall komplett und mit dem richtigen Seitenverhältnis angezeigt werden müssen, musst du 2 Fälle unterscheiden: hochkant und längskant.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
// variable für den Grad der skalierung des Bildes. also wie viel mal größer es wird - bei 2 ist es doppelt so groß var skalierung = 0; if(mc._height > mc._width) { // höher als breit -> hochkant skalierung = Stage.height / mc._height; } else { // längskant skalierung = Stage.width / mc._width; } // skalieren mc._width *= skalierung; mc._height *= skalierung;
Gruß
.
-
21.03.10 10:55 #7
- Registriert seit
- Oct 2009
- Beiträge
- 50
Hallo zusammen,
@Jens B.: Du hast natürlich recht, der Code ist nicht von mir, sondern aus einem Tutorial.
Es hat noch nicht funktioniert, liegt aber wahrscheinlich nicht an dem Code, sondern an zwei Dingen, die mir noch aufgefallen sind.
- Wenn der Code doch bewirken soll, dass die Bilder skaliert werden, dann widerspricht sich das doch mit einer Funktion weiter oben. Diese soll doch bewirken, dass die Bilder die Größe, der Bühne annehmen. Ich habe den Abschnitt in dem Code unten mal Markiert (sucht nach "AB HIER" "BIS HIER").
- Aus irgendeinem Grund werden die hochkant Bilder, immer um 90 Grad in eine beliebige Richtung gedreht.
Ich hatte mir übrigens selber folgenden logischen Ablauf für das Skalieren überlegt:
Ich möchte, dass jedes Bild solange skaliert wird bis die Höhe des Bildes der Höhe des MCs entspricht. Diese Skalierung soll, wie bei den folgenden auch proportional geschehen. Nach der Faustregel, dass Breite durch Höhe immer 1,33 ergeben muss.
Wenn nach dieser ersten Skalierung das Bild eine größere (kleiner ist egal) Breite als der MC aufweist, dann soll das Bild nach der gleichen Skalierungstechnik auf die Breite des MCs gebracht werden.
Zum Schluss möchte ich nochmal daran errinnern, dass die Bilder momentan nicht der Bühnengröße entsprechen, sondern größer sind.
Hier der Code:
PHP-Code:import mx.transitions.*;
//Diesen Code am anfang der Skriptes setzen
Stage.scaleMode = "noScale";
Stage.align = "TL";
//leeren MC erstellen
this.createEmptyMovieClip("con",1);
//zuerst transparent setzen
this.con._alpha = 0;
//Zähler
var index:Number = 0;
//Liste der Bilder
var urls:Array = new Array("(1).jpg", "(2).jpg", "(3).jpg", "(4).jpg", "(5).jpg", "(6).jpg", "(7).jpg", "(8).jpg", "(9).jpg", "(10).jpg", "(11).jpg");
//Anzahl der Bilder ermitteln über Länge des Arrays
var len:Number = urls.length;
//5 Sekunde = 5000 Millisekunden Pause zwischen den Bildern
var pause:Number = 5000;
//AB HIER
var o:Object = new Object();
Stage.addListener(o);
o.onResize = function() {
bg._x = Stage.width/2;
bg._y = Stage.height/2;
con._x = Stage.width/2-con._width/2;
con._y = Stage.height/2-con._height/2;
setBackgroundSize();
};
o.onResize();
o.onResize = function() {
bg._x = Stage.width/2;
con._x = Stage.width/2-con._width/2;
setBackgroundSize();
};
o.onResize();
//Das Hintergundbild soll das gesamten Browserfenster einnehmen
function setBackgroundSize() {
var p:Number;
if (bg._width<Stage.width) {
p = Stage.width/bg._width;
bg._width = Stage.width;
bg._height *= p;
}
if (bg._height<Stage.height) {
p = Stage.height/bg._height;
bg._height = Stage.height;
bg._width *= p;
}
}
//BIS HIER
function startLoader(){
//Lauscher und MovieClipLoader-Instanz erstellen
_root.mclListener = new Object();
_root.mcLoader = new MovieClipLoader();
_root.mcLoader.addListener(_root.mclListener);
//und das erste Bild laden
_root.mcLoader.loadClip("../bilder/bilder/orginal/home/"+_root.urls[index], _root.con);
//Bild ist geladen und MC wurde befüllt:
mclListener.onLoadInit = function(mc:MovieClip) {
trace("fertig, beladen wurde "+mc);
//MC Skalieren
mc._width = Stage.width;
mc._height = Stage.height;
// variable für den Grad der skalierung des Bildes. also wie viel mal größer es wird - bei 2 ist es doppelt so groß
var skalierung = 0;
if(mc._height > mc._width) {
// höher als breit -> hochkant
skalierung = Stage.height / mc._height;
} else {
// längskant
skalierung = Stage.width / mc._width;
}
// skalieren
mc._width *= skalierung;
mc._height *= skalierung;
//MC auf die Bühnen-Mitte setzen:
mc._x = int((Stage.width - mc._width)/2);
mc._y = int((Stage.height - mc._height)/2);
_root.fader(mc,true);
}
}
function fader(mc,blende){
//mc ist das ein- oder auszublendende Objekt
//blende ist true oder false, d.h. blendet ein oder aus
if(blende){
//einblenden von alpha=0 bis alpha=100 in 0,6 Sekunden
var tw1:Tween = new Tween(mc, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, 0.6, true);
tw1.onMotionFinished = function() {//wenn ausblenden beendet...
_root.meineID = setInterval(_root,"weiter",_root.pause);//5 Sek Pause
}
}
else{//ausblenden
var tw2:Tween = new Tween(mc, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 0.6, true);
tw2.onMotionFinished = function() {//wenn ausblenden beendet...
_root.folgefilm();//nächsten Film laden und einblenden
}
}
}
//Intervall ist beendet
function weiter(){
trace("Pause beendet");
//Intervall wieder löschen
clearInterval(_root.meineID);
//aktuelles Bild ausblenden
_root.fader(_root.con,false);
}
function folgefilm(){
trace("folgefilm");
_root.index++;
//checken, ob das letzte Bild erreicht wurde
if(_root.index == _root.len){
//letztes Bild wurde gezeigt, wieder mit dem ersten Bild starten = Loop
_root.index = 0;
}
_root.mcLoader.loadClip("../bilder/bilder/orginal/home/"+_root.urls[index], _root.con);
}
startLoader();
this.stop();
Vielen DankGeändert von Webflasher (21.03.10 um 10:58 Uhr)
-
Die von dir markierten Zeilen skalieren lediglich das Hintergrundbild auf die volle Größe der Bühne. Auch das steht in den Kommentaren:
Magst du mal die fla und ein paar Beispielbilder posten dass man das ganze mal ausprobieren und sehen kann. Kannst es ja irgendwo hochladen und verlinken.//Das Hintergundbild soll das gesamten Browserfenster einnehmen
-
21.03.10 18:00 #9
- Registriert seit
- Oct 2009
- Beiträge
- 50
Klar, mach ich:
Hier der Link zur fla:
(entfernt)
Vielen Dank
P.S.: Ich würde die Dateien gerne so schnell wie möglich wieder löschenGeändert von Jens B. (21.03.10 um 21:02 Uhr)
-
Probier's mal mit der fla im Anhang.
Irgendwas scheint mit dein Bildern nicht zu stimmen, die wurden auch im Windows Explorer als längskant angezeigt - als ich sie dann in Photoshop geöffnet habe waren manche aber hochkant. Als ich die dann gespeichert und in der fla verwendet habe ging's. Außerdem sind die Bilder viel zu groß, denk mal darüber nach die bei der Gelegenheit gleich kleiner zu skalieren.
Gruß
jens
-
22.03.10 19:19 #11
- Registriert seit
- Oct 2009
- Beiträge
- 50
@Jens B.:
Vielen Dank! Es hat geklappt.
Ich könnte „Vielen Dank!“ jetzt tausend mal kopieren, aber ich glaube die Botschaft ist die Selbe...
Mir fällt momentan nichts ein, wie ich bzw. wir (wenn du den u. g. Link anklickst, weißt du was ich meine) mich/uns revanchieren kann/können....
Guck dir gerne mal (wenn du es noch nicht gemacht hast) die Homepage an, klicke einfach hier.
Nochmals Vielen Dank und bis dann...
P.S.: Solltest du (nur wenn du Langeweile hast
; hat auch bei mir eine sehr geringe Priorität) einen Code kennen, der bewirkt, dass die Diashow pausiert, wenn mann mit der Maus drüber fährt, dann wäre ich dir mal wieder sehr dankbar, wenn du diesen posten würdest...
Edit: Danke das du die Links (weiter oben) gelöscht hastGeändert von Webflasher (22.03.10 um 19:37 Uhr) Grund: siehe Edit
Ähnliche Themen
-
XML Flashslideshow
Von Alaniak im Forum Flash PlattformAntworten: 2Letzter Beitrag: 06.11.08, 08:00 -
Bild verkleinern mit Proportionen beibehalten?
Von Alex1987 im Forum PhotoshopAntworten: 1Letzter Beitrag: 17.11.07, 15:23 -
Proportionen meines Pop-up-Fensters
Von anopheles1337 im Forum PHPAntworten: 12Letzter Beitrag: 28.07.06, 19:45 -
Bilder zuschneiden, proportionen beibehalten
Von LotseDerLotsen im Forum PHPAntworten: 3Letzter Beitrag: 15.02.05, 18:40 -
Wie halte ich die Proportionen?
Von Trelonist im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 31.10.04, 10:48





Zitieren


Login





