Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Zoom относительно курсора мыши (http://www.flasher.ru/forum/showthread.php?t=130795)

Yami 05.10.2009 23:01

Zoom относительно курсора мыши
 
Здравствуйте! Есть такое дело:
Есть мувик (изображение), которое можно масштабировать (приближать/отдалять) при помощи скролла. Сперва была проблема с тем, что масштабировалось относительно левого-верхнего угла. Заморачиваться с точкой трансформации очень не хотелось и решил вопрос таким способом:
Код AS1/AS2:

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

Вложений: 1
Я в принципе нашёл решение, масштабирует строго по положению мышки скролом но при загрузке флешки прелоадером зум не работает, было бы интересно может кто подскажет решение масштабирования после загрузки флешки прелоадером
Код AS1/AS2:

        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

Я уже это спрашивал Тут. Ответ в предпоследнем сообщении.

Zik. 02.12.2009 17:16

Автору это уже неакутально


Часовой пояс GMT +4, время: 01:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.