MovieClip in alle Richtungen gleich skalieren

ali-gator

Erfahrenes Mitglied
Hallo,

ich häng grad ein bisschen fest und bräuchte ein wenig Hilfe. Und zwar skaliere ich einen MovieClip mit einem Bild drin über einen Schieberegler über die Eigenschaften _width und _height. Allerdings wird immer nach links unten skaliert und ich hätte gerne dass der Bildausschnitt immer im Rahmen bleibt und sich der Rest außenrum vergrößert... Ich hoffe ihr wisst einigermaßen was ich mein. Beispiel-Flash ist im Anhang.
Danke schonmal und noch einen schönen Abend!
ali-gator
 

Anhänge

Hallo,

dafür musst du unterscheiden zwischen skalieren und verschieben. Stell deinen Bild-MovieClip in einen MovieClip-Container. Den Container positionierst du so, dass sein Mittelpunkt dem des Rahmens entspricht. Wenn du nun skalierst, dann nicht etwa das Bild selbst, sondern diesen Container. Wenn du jedoch das Bild verschieben willst, dann musst du das mit dem Bild selbst tun und nicht etwa mit dem Container. So wird beim Zoomen immer von der Mitte des Bildes ausgegangen, der Ausschnitt vergrössert sich also auf alle Seiten gleichmässig.

gruss
 
Hey,

ich hab doch gewusst dass die Lösung im Grunde ganz einfach ist :) Danke. Ich wollte erst anfang mit Prozentangaben irgendwelche überstände auszurechnen und dann den MC zu verschieben...
ali-gator
 
Hmm jetzt komm ich irgendwie vom Regen in die Traufe. Wenn ich jetzt nämlich eine Funktion schreiben will die verhindert, dass der Mc zu weit nach Links/Rechts geschoben wird (also das innerhalb des Rechtecks der Hintergrund zu sehen ist) bekomm ich Probleme, weil sich die x/y Koordinaten des BildMcs je nach Skalierung des Containers in dem der Bild-MC liegt ändern... Weiß dafür auch jemand ne Lösung? :)
danke und bis dann
ali-gator
 
Hallo,

folgendes Skript sollte dir die Rechnungsweise zeigen:

Code:
var bild; //dein Bild-MovieClip
var frame; //dein Rahmen-MovieClip
var container; //dein Container-MovieClip
	
var frameW = rahmen._width/2;
var frameH = rahmen._height/2

var wratio = container._xscale/100;
var hratio = container._yscale/100;

frameW /= wratio;
frameH /= hratio;

var picW = bild._width;
var picH = bild._height;

var left = -1*(picW-frameW);
var top  = -1*(picH-frameH);

var right = -1*frameW;
var bottom  = -1*frameW;
	
bild.startDrag(false, left, top, right, bottom);

gruss
 
Zurück