scale - zoom

harrry

Erfahrenes Mitglied
Hallo, ich habe da etwas gebastelt, in der Hoffnung, solchen Sachen zumindest aus weiter entfernung näher zu rücken. Mir gehts nur um den dynamischen Zoom, keine Ahnung, ob das der richtige Weg ist. Im Beispiel sind es jetzt nur mal 2 Zoom-Zonen - und eines meiner Probleme lautet: wie verhindere ich, dass Feld Nr. 2 so komisch "übers Eck" fährt? Schwer zu beschreiben, aber die .fla erklärt sich selbst.
Cheers, H.
 

Anhänge

  • ScaleTry.zip
    10 KB · Aufrufe: 61
Zuletzt bearbeitet:
Thema nicht interessant genug?

Würde mich auch schon freuen über einen Hinweis auf ein passendes Tutorial...
 
Thema nicht interessant genug?
Doch, schon. ;) Es hat nur etwas gebraucht, bis ich ein funktionierendes Beispiel auf die Reihe gekriegt habe.

Im Anhang nun das Resultat: Beim Klick auf eines der Rechtecke wird abwechselnd ein- und ausgezoomt, wobei das angeklickte Rechteck zentriert wird.

Gruß
.
 

Anhänge

  • doscale.zip
    6,4 KB · Aufrufe: 75
Funktioniert ganz toll, ist mir aber zu hoch. Würde es aber auch wirklich gern verstehen. Was hast Du Dir dabei gedacht? :)
Hab jetzt übrigens einen leeren Container in das "Pad" gelegt, die Pads einzeln getauft und lade nun externe .jpgs - oder .swfs - rein, und zwar mit
PHP:
_root.map.pad1.container._xscale = 40
         _root.map.pad1.container._yscale = 40
         _root.map.pad1.container.loadMovie("bild1.jpg");
         _root.map.pad2.container.loadMovie("bild2.jpg");
         _root.map.pad3.container.loadMovie("bild3.jpg");
         _root.map.pad4.container.loadMovie("bild4.jpg");
 _root.map.pad5.container.loadMovie("bild5.jpg");
Ist das denn so richtig mit den Anweisungen für x_scale und y-scale (damit die Bilder, deren Originalgröße dem vergrößerten Darstellungsmodus entspricht, zuerst verkleinert angezeigt werden)? Und muss ich das für jeden Container extra reinschreiben oder ginge das mit einer hm.. funktion?
 
Hi,

ich würde es mit einer Schleife machen:
Code:
for (var i=0; i<4; i++) {
    map["pad" + (i + 1)].container.loadMovie("bild" + (i + 1) + ".jpg");
    map["pad" + (i + 1)]._xscale = map["pad" + (i + 1)]._yscale = 40;
}

1. Es bringt nichts, den Container zu skalieren, da er durch das Laden eines Bildes wieder initialisiert wird. Daher würde ich wie in meinem Beispiel einfach die Pads skalieren.

2. Neben _xscale muss natürlich auch _yscale angepasst werden.

Zu meiner Vorgehensweise:
  • in bx und by wird zunächst die Originalposition des Containers (map) gespeichert

  • Die Variable _mode bestimmt, ob ein- oder ausgezoomt werden soll

  • In tx und ty wird die Position des angeklickten Pads abgelegt

  • cx und dy sowie cscale brauchst Du nicht: Das sind Variablen eines vorherigen Versuchs, die ich vergessen habe zu löschen. ;)

  • dx und dy sind die Zielkoordinaten des Clips nach dem Zoomen. Diese Koordinaten sind abhängig von dem angestrebten Zoomfaktor (dscale)

  • In der onEnterFrame-Methode wird nun sowohl mit der Position als auch mit dem Skalierungsfaktur (_xscale/_yscale) die selbe Transition ausgeführt. Dadurch verhalten sich Position und Größe proportional zu einander, was das von Dir bemängelte "Springen" vermeidet.

Gruß
.
 
Zuletzt bearbeitet:
...in meinem Leichtsinn hab ich mir gedacht: füllen wir doch nach Deiner Vorgabe auch gleich noch ein nettes Textfeld, und zwar so:
PHP:
bildtext1 = "Bla";
   bildtext2 = "Bla2";
   for (var i = 0; i<6; i++) {
   	map["pad"+(i+1)].container.loadMovie("bild"+(i+1)+".jpg");
   	map["pad"+(i+1)]._xscale = map["pad"+(i+1)]._yscale=40;
   	map["pad"+(i+1)].container.textfeld.htmlText = "bildtext"+(i+1);
   }
Natürlich alles falsch, weils nicht geht. Im Pad steckt das Textfeld samt Bezeichner. Aber warum nicht?
 
ok, war Unsinn, müßte lauten:
PHP:
map["pad"+(i+1)].textfeld.htmlText = "bildtext"+(i+1);
...aber das geht auch nicht!
 

Neue Beiträge

Zurück