PDA

Просмотр полной версии : Zoom относительно курсора мыши


Yami
05.10.2009, 23:01
Здравствуйте! Есть такое дело:
Есть мувик (изображение), которое можно масштабировать (приближать/отдалять) при помощи скролла. Сперва была проблема с тем, что масштабировалось относительно левого-верхнего угла. Заморачиваться с точкой трансформации очень не хотелось и решил вопрос таким способом:
mouseListener.onMouseWheel = function (delta)
{
var oldx:Number;
var oldy:Number;
var dx:Number;
var dy:Number;
oldx = _root["layer0"]._xmouse;
oldy = _root["layer0"]._ymouse;
_root["layer0"]._xscale = _root["layer0"]._xscale + delta;
_root["layer0"]._yscale = _root["layer0"]._yscale + delta;
xm = _root["layer0"]._xmouse;
ym = _root["layer0"]._ymouse;
dx = xm - oldx;
dy = ym - oldy;
_root["layer0"]._x = _root["layer0"]._x + dx;
_root["layer0"]._y = _root["layer0"]._y + dy;
};

При первых шагах вроде все нормально но потом появляются погрешности, потом появляются огромные погрешности, потом - колоссальные и в итоге... лучше не видеть, что происходит...
Уже и пытался окрыгления вводить при получении координат мыши (никак не могу понять КАК они могут быть ДРОБНЫМИ? О_О)..

Bitcoolman
06.10.2009, 14:52
в процентах попробуй... от высоты и ширины

ere
06.11.2009, 17:46
Я в принципе нашёл решение, масштабирует строго по положению мышки скролом но при загрузке флешки прелоадером зум не работает, было бы интересно может кто подскажет решение масштабирования после загрузки флешки прелоадером
function onLoad(){
Mouse.addListener(this);
}
function onMouseWheel (delta:Number, scrollTarget:String) {
this._x = this._x-5*this._xmouse*delta/100;
this._y = this._y-5*this._ymouse*delta/100;

this._xscale = this._xscale+5*delta;
this._yscale = this._yscale+5*delta;
}
hihka.onPress = function() {
_root.hihka.startDrag(false);
};
hihka.onRelease = function() {
_root.hihka.stopDrag();
};

pavel gorlov
02.12.2009, 15:55
Я уже это спрашивал Тут (http://www.flasher.ru/forum/showthread.php?t=90575). Ответ в предпоследнем сообщении.

Zik.
02.12.2009, 17:16
Автору это уже неакутально