Ну вот поживому надергал
Код AS1/AS2:
var path = this
var CLK:Object // ZOOM PISITION
var CLK2:Object // ZOOM PISITION 2
function changePOS(){
CLK2 = { x:MAP._xmouse, y:MAP._ymouse }
MAP._x += (CLK2.x - CLK.x)*MAP._xscale/100
MAP._y += (CLK2.y - CLK.y)*MAP._xscale/100
}
function zoom_func() {
calc = zoom_procent
TweenLite.to( MAP, 0.5, { _xscale:calc, _yscale:calc, onUpdate:changePOS })
}
any_clip.onMouseMove = function(){
CLK = { x:path.MAP._xmouse, y:path.MAP._ymouse }
}
any_clip.onMouseWheel = function(varDelta:Number, mc) {
path.zoom_func()
}
Суть - CLK - точка от которой начали масштабировать, CLK2 - текущая. При медленном зуме может ездить за мышью.
Ну и медленно зумим, параллельно передвигая карту куда надо в changePOS()
MAP - масштабируемый клип
Вместо координат мыши - используйте координаты шарика. Ту, где он стоял, и ту, куда он смещается.
Ну собссно как это должно выглядеть - тут
http://galaxywars.ru/FM.html