Reputation: 625
I am using flash (AS3) and have a dynamic movie clip that I want to scale up or down using a slider bar. I have this working very well using the scaleX and scaleY functions.
The only trouble is that these scale from the left hand side of the document and I would like it to be scaled from the center
Any help is appreciated.
Upvotes: 4
Views: 3497
Reputation: 551
function scaleFromCenter(dis:*, sX:Number, sY:Number):void
{
var prevW:Number = dis.width;
var prevH:Number = dis.height;
dis.scaleX = sX;
dis.scaleY = sY;
dis.x += (prevW - dis.width) / 2;
dis.y += (prevH - dis.height) / 2;
}
scaleFromCenter(yourMovieClip, 0.3, 0.3);
..
Or have a look at Greensocks TweenMax/AutoFitArea
http://www.greensock.com/autofitarea/
Very powerful and easy to use.
Upvotes: 3
Reputation: 26841
In order to scale / Rotate from the center of the object you need to do the following
Here is a piece of code that does it.
private function scaleInPosition(dis:Sprite,sX:Number,sY:Number):void
{
var posX:Number = dis.x;
var posY:Number = dis.y;
dis.x =dis.y = 0;
dis.scaleX = sX;
dis.scaleY = sY;
dis.x = posX;
dis.y = posY;
}
Upvotes: 2
Reputation: 3851
Simply create the object that you're scaling with it's 0,0 registration crosshair at the centre.
Upvotes: 1