Форум 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)
-   -   скролинг картинки мышкой (без нажатия) (http://www.flasher.ru/forum/showthread.php?t=98574)

Aisaid 16.07.2007 18:55

скролинг картинки мышкой (без нажатия)
 
цель: создать окошко в котором "сидит" картинка большего размера чем окно - соответственно с маской
при наведении мышкой на окно начинается прокручиваться картинка в сторону противоположную направлению мышки (с пропорциональной скоростью скрола, от центра окошка)
(предполагаю позже сделать скейл картинки бегунком...)

Код:

onClipEvent (load) {
        _root.attachMovie("pict1", "pict1", this.getNextHighestDepth());
        _root.pict1.setMask(this);

        x_center = _x;
        y_center = _y;
        x_min = (_x-(_root.pict1._height-_root.window._height))/2;
        y_min = (_y-(_root.pict1._width-_root.window._width))/2;
        _root.pict1._x=x_center;
        _root.pict1._y=y_center;
}

onClipEvent (mouseMove) {
        this._alpha = 100;
                        if (_root.pict._x <= _x and _root.pict._x >= x_min) {
//                                trace (pict1._y);
                                _root.pict1._x=(x_center-((_xmouse*((x_center-_xmouse)/_height))));
                        }
                        if (_root.pict._y <= _y and _root.pict._y >= y_min) {
                                _root.pict1._y=(y_center-((_ymouse*((y_center-_ymouse)/_width))));
                        }
}

(условия почему-то вообще не работают...)

результат: запутался во вроде бы несложных вычислениях
сейчас работает как бревно по сравнению с яхтой... :(

помогите правильно всё расчитать ...

здесь исходник: http://master-ais.narod.ru/TTT/scroll.zip

или хотябы примеры на разборку подкиньте

Aisaid 17.07.2007 14:43

так никто ничего не подскажет?

Torero 17.07.2007 15:50

Не проверял, но должно работать - из похожего своего кода выдрал.

Код:

        mask_mc.onRollOver=function(){
                nInterval=setInterval(Delegate.create(this, function(){
                        window_mc._x = -this._xmouse/this._width*window_mc._width;
                        window_mc._y = -this._ymouse/this._height*window_mc._height;
                }),150);
        };

-------
при роллауте убиваешь интервал.

З.Ы.Спасибо за идейку - дешево и сердито.)))

Aisaid 19.07.2007 11:57

Torero
спасибо, так проще вычислять, да
но лучше ставить не ОнРоллОвер, а ОнИнтерФрейм - с условием проверки хитов

я ещё хотел сделать динамику - инерцию и зависимость скорости скролинга от центра окошка...
как это осуществить? какими алгоритмами?

Torero 19.07.2007 14:07

1.onRollOver или onEnterFrame - зависит от задачи. используя onEnterFrame, надо будет сделать так чтобы код не жрал ресурсы когда мышь не наведена. Неплохой вариант - запускать oEF клипа при ролловере и вырубать при роллауте (сам не пробовал пока, но думаю, что проблем не возникнет).
2.Немного соврал в ответе
Код:

                window_mc._x=-this._xmouse/this._width*window_mc._width+this._xmouse;
                window_mc._y=-this._ymouse/this._height*window_mc._height+this._ymouse;

3.ускорение:введи в правую часть выражения множитель, размер которого зависит от мыши и ширины. что-нить типа "Math.abs(this._width/2-this._xmouse)/5" или юзай tween
4.инерцию смоделировать можно, но сложно - сам не делал, а возиться лень. юзай tween.
З.Ы. Дважды подумай нужно-ли это вообще - а то иногда столько поналепят всего, что просто смотреть тошно.:)

Aisaid 19.07.2007 16:41

Torero
спасибо, всё правильно говоришь - излишества часто портят впечатление (да и когда флешка тормозит от "красивостей" очень раздражает)
просто нужно было для галлереи, при просмотре каринки в маленьком окошке, чтобы она удобно и красиво скролилась - видел подобный эффект на каком-то сайте, выглядит красиво и ресурсрв не жрёт (да и много ли нужно вычислений чтобы передвинуть одну единстаенную картинку...)

а Твины програмно можно использовать? я не знал...
т.е. можно задавать програмно траекторию движения и ускорение ???
как? именно это мне и нужно! подскажите плиз

Aisaid 31.07.2007 20:36

подскажите пожалуйста, как работать с классами
мне хотелось бы этот пример: http://www.sephiroth.it/tutorials/flashPHP/scrollRect/
как-то использовать

или как этот пример использовать/преобразить в обычный скрипт?
плиииз

etc 31.07.2007 23:01

Гм, а чем класс не есть AS-скрипт?

Aisaid 01.08.2007 12:18

ладно, согласен, всё это скрипт

но как мне этот код использовать?
только не нужно писать - "бери и пользуй" ... дайте пожалуйста конкретные советы

меня смущают всякие непонятности в коде, если его использовать просто так (типа private function)

etc 01.08.2007 12:53

http://www.flash-ripper.com/archives/000304.htm


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

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