DukeWendel
asked on
zooming in as3
The code below zooms on to a movieclip using a slider. The user may move the movie clip after he zoomed to see the part he wishes. My question is how can one make a zoom that zooms in to the point where the mouse is(moving the movieclip)
import fl.events.SliderEvent
zoomer.liveDragging=true
zoomer.addEventListener(SliderEvent.CHANGE,zoomDo)
zoomer.addEventListener(SliderEvent.THUMB_PRESS,centerP)
box.buttonMode=true;
box.addEventListener(MouseEvent.MOUSE_DOWN,startD)
box.addEventListener(MouseEvent.MOUSE_UP,stopD)
function centerP(e:Event)
{
box.x=551;
box.y=361;
}
function zoomDo(e:Event)
{
box.scaleX=zoomer.value/100
box.scaleY=zoomer.value/100
}
function startD(e:Event)
{
e.currentTarget.startDrag();
}
function stopD(e:Event)
{
e.currentTarget.stopDrag();
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you for the solution still not quite sure how to get it to the needed x and y gradually but your answer was good.
you can tween it there... use TweenMax: http://blog.greensock.com/tweenmaxas3/
I really should have thought about adding that in there... it is a much more elegant solution ;)
attached is some updated code that uses TweenMax...
rp / ZA
// AS 3.0
import gs.TweenMax;
import gs.easing.*;
box_mc.addEventListener( MouseEvent.MOUSE_DOWN, checkPos );
function checkPos( e:MouseEvent ):void
{
var shiftX:int = mouseX - map_mc.x;
var shiftY:int = mouseY - map_mc.y;
var newX:int = ( box_mc.x + (box_mc.width/2) ) - shiftX;
var newY:int = ( box_mc.y + (box_mc.height/2) ) - shiftY;
TweenMax.to( map_mc, .5, { x: newX, y: newY } );
}
you would find the position of the mouse useing _xmouse and _ymouse, and then you would position the center of the movieclip to that spot...
so something like this should work...
clip.x = mouseX - ( clip.width/2 ) ;
clip.y = mouseY - ( clip.height/2 ) ;
you might need to use box._xmouse and box._ymouse if the above does not work...
rp / ZA