Вообщем, такая проблема.
Есть клип Base.baseClip, я его уменьшаю или увеличиваю при вращении скрола. Как сделать так, чтобы объект, который находится под мышкой оставался на месте. То есть нужно как-то хитро сдвигать Base.baseClip, чтобы компенсировать увеличение.
Вот как поступаю я:
Код:
mouseListener.onMouseWheel = function(delta:Number) {
* *Tools.Zoom(2*delta);
};
Tools.Zoom - функция масштабирования
Код:
private static function Zoom(_zoomDec:Number) {
****var newScale:Number = Base.baseClip._xscale+_zoomDec;
****var oldX:Number=Base.baseClip._xmouse;
****var oldY:Number=Base.baseClip._ymouse;
****//не даём слишком увеличить или уменьшить клип *
****if (newScale>33 && newScale<300) {
*Base.baseClip._yscale=Base.baseClip._xscale=newScale;
****} else {
*return;
****}
* * * * * * * *//компенсируем растяжение
****Base.baseClip._x-=oldX-Base.baseClip._xmouse;
****Base.baseClip._y-=oldY-Base.baseClip._ymouse;
}
Всё это работает почти как надо. ПОЧТИ. Просто пи увеличении или уменьшении объект всё-таки сдвигается.
В чём же дело?
Я понимаю, что это скорее математика, чем Флеш, но может уже кто-то такое делал? Масштабирование я имею ввиду.
Или кто-то может привести формулы для масштабирования относительно центра.