Форум 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=128583)

true11 12.08.2009 14:14

Самодельные выпадающие списки, их прокручивание средней кнопкой мыши
 
Нужно было сделать регистрацию на сайте в подгружаемом ролике, так как встроенные компоненты в подгружаемых роликах работают оч часто некорректно сделал несколько самодельных так называемых "select"-ов, все оч мило, но хотелось бы для удобства добавить фичу, чтобы при onRollOver-e если двигать колесиком, содержимое селекта тоже двигалось. Не могу найти где и как отлавливать колесико мыши((( гуру, выручайте((

P.S. Проблему почти решил, повезло-таки с поиском. Но опять же остаеца открытым вопрос, как именно при наведении на определенный мувик активировать определенную функцию прокрутки(вверх/вниз) (грубо говоря, куда совать onRollOver):

Код AS1/AS2:

mouseListener.onMouseWheel = function(wheel) {
if(wheel>0){
        trace("Вы крутите колесо вверх");
}else {
trace("Вы крутите колесо вниз");
}
}
Mouse.addListener(mouseListener);


KiL33 12.08.2009 14:51

Код AS1/AS2:

mouse = new Object();
mouse.onMouseWheel = function(delta) {
        if (delta<0) {
                trace("0")
        }
        if (delta>0) {
                trace("1")
        }
};
Mouse.addListener(mouse);


etc 12.08.2009 14:57

KiL33, а зачем создавать бесполезный объект?

KiL33 12.08.2009 15:01

Если вы знаете другой способ покажите, в этом примере без объекта скролл работать не будет.

Добавлено через 20 минут
ГЫ
можно и так:umnik2:
Код AS1/AS2:

mouse = new Object();
mouse.onMouseWheel = function(wheel) {
        if (wheel<0) {
                trace("0")
        }
        if (wheel>0) {
                trace("1")
        }
};
Mouse.addListener(mouse);


mooncar 12.08.2009 15:37

Автор, вот вам решение. Сколько есть объектов, сделайте это для каждого mc с учетом ваших операций вместо trace.
(Не забудьте щелкнуть где угодно во флешке, иначе onMouseWheel не станет работать).
Код AS1/AS2:

mc1.onRollOver = function  () {
        this.onMouseWheel = function(wheel) {
          if (wheel < 0) {
                trace("0");
          }
          if (wheel > 0) {
                trace("1");
          }
        };
        Mouse.addListener(this);
}
 
mc1.onRollOut = function  () {
        delete this.onMouseWheel;
        Mouse.removeListener(this);
}

В качестве слушателя событий мыши тут выступает сам mc.
При наведении на mc включается функция, которая ловит поворот колесика, а при уведении с mc
она удаляется.

etc 12.08.2009 15:39

KiL33, а this чем не угодил?

true11 13.08.2009 02:04

Блин.. огромное спасибо всем, но возникла проблема в том что при заходе мышки на любой пункт селекта(это мувики с текстом и бэкграундом, реагирующие на полный спектр онролловеров и прочей кнопочной лабуды) теряется onRollOver для клипа прокрутки.. в отчаянии, смотрел как сделать рабочими кнопку под кнопкой, но тут решения не нашел... а если сделать свой компонент он будет работать в подгружаемых swf? как в таких случаях делают регистрацию с селектами?

KiL33 13.08.2009 06:26

Цитата:

KiL33, а this чем не угодил?
хз..просто решил так написать и всё тут. Особо страшного в этом ничего не вижу.

mooncar 13.08.2009 10:25

Вы вроде бы говорили, что у вас все самоделное...
Цитата:

Сообщение от true11 (Сообщение 842334)
как в таких случаях делают регистрацию с селектами?

вот эта фраза не очень понятна, но многие проблемы с потерей RollOver можно решить с помощью проверки hitTest.

true11 14.08.2009 02:09

Мм.. выпадающие селекты - для выбора даты рождения. Мм вот попробовал сделать нечто, но попал на глюк.. фишка в том, что если навести на область 1й раз мышь, прокручивается с одной скоростью, а если раз тридцать навести-убрать, то скорость возрастает раз в 20..

Вот мой код для события wheel одного из объектов.. конченный немного, не судите пианиста, глаза слипаются и мозг не варит((

Код AS1/AS2:

        var mouseListener:Object = new Object();
        mouseListener.onMouseWheel = function(wh){
                if (wheel_days.hitTest(_root._xmouse, _root._ymouse)) {
                if(wh>0){if(scrollDays.begunok._y > 0){scrollDays.begunok._y = scrollDays.begunok._y-2;}else{scrollDays.begunok._y = 0;} }
                if(wh<0){if(scrollDays.begunok._y < 89){scrollDays.begunok._y = scrollDays.begunok._y+2;}else{scrollDays.begunok._y = 89;}}
                }
 
                if (wheel_month.hitTest(_root._xmouse, _root._ymouse)) {
                if(wh>0){if(scrollMonths.begunok._y > 0){scrollMonths.begunok._y = scrollMonths.begunok._y-2;}else{scrollMonths.begunok._y = 0;} }
                if(wh<0){if(scrollMonths.begunok._y < 89){scrollMonths.begunok._y = scrollMonths.begunok._y+2;}else{scrollMonths.begunok._y = 89;}}
                }
 
                if (wheel_year.hitTest(_root._xmouse, _root._ymouse)) {
                if(wh>0){if(scrollYears.begunok._y > 0){scrollYears.begunok._y = scrollYears.begunok._y-2;}else{scrollYears.begunok._y = 0;} }
                if(wh<0){if(scrollYears.begunok._y < 89){scrollYears.begunok._y = scrollYears.begunok._y+2;}else{scrollYears.begunok._y = 89;}}
                }
        }
 
        Mouse.addListener(mouseListener);

Вроде должно норм быть.. Не будет систему грузить добро это?


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

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