Просмотр полной версии : Самодельные выпадающие списки, их прокручивание средней кнопкой мыши
Нужно было сделать регистрацию на сайте в подгружаемом ролике, так как встроенные компоненты в подгружаемых роликах работают оч часто некорректно сделал несколько самодельных так называемых "select"-ов, все оч мило, но хотелось бы для удобства добавить фичу, чтобы при onRollOver-e если двигать колесиком, содержимое селекта тоже двигалось. Не могу найти где и как отлавливать колесико мыши((( гуру, выручайте((
P.S. Проблему почти решил, повезло-таки с поиском. Но опять же остаеца открытым вопрос, как именно при наведении на определенный мувик активировать определенную функцию прокрутки(вверх/вниз) (грубо говоря, куда совать onRollOver):
mouseListener.onMouseWheel = function(wheel) {
if(wheel>0){
trace("Вы крутите колесо вверх");
}else {
trace("Вы крутите колесо вниз");
}
}
Mouse.addListener(mouseListener);
mouse = new Object();
mouse.onMouseWheel = function(delta) {
if (delta<0) {
trace("0")
}
if (delta>0) {
trace("1")
}
};
Mouse.addListener(mouse);
KiL33, а зачем создавать бесполезный объект?
Если вы знаете другой способ покажите, в этом примере без объекта скролл работать не будет.
Добавлено через 20 минут
ГЫ
можно и так:umnik2:
mouse = new Object();
mouse.onMouseWheel = function(wheel) {
if (wheel<0) {
trace("0")
}
if (wheel>0) {
trace("1")
}
};
Mouse.addListener(mouse);
Автор, вот вам решение. Сколько есть объектов, сделайте это для каждого mc с учетом ваших операций вместо trace.
(Не забудьте щелкнуть где угодно во флешке, иначе onMouseWheel не станет работать).
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
она удаляется.
KiL33, а this чем не угодил?
Блин.. огромное спасибо всем, но возникла проблема в том что при заходе мышки на любой пункт селекта(это мувики с текстом и бэкграундом, реагирующие на полный спектр онролловеров и прочей кнопочной лабуды) теряется onRollOver для клипа прокрутки.. в отчаянии, смотрел как сделать рабочими кнопку под кнопкой, но тут решения не нашел... а если сделать свой компонент он будет работать в подгружаемых swf? как в таких случаях делают регистрацию с селектами?
KiL33, а this чем не угодил?
хз..просто решил так написать и всё тут. Особо страшного в этом ничего не вижу.
Вы вроде бы говорили, что у вас все самоделное...
как в таких случаях делают регистрацию с селектами?
вот эта фраза не очень понятна, но многие проблемы с потерей RollOver можно решить с помощью проверки hitTest.
Мм.. выпадающие селекты - для выбора даты рождения. Мм вот попробовал сделать нечто, но попал на глюк.. фишка в том, что если навести на область 1й раз мышь, прокручивается с одной скоростью, а если раз тридцать навести-убрать, то скорость возрастает раз в 20..
Вот мой код для события wheel одного из объектов.. конченный немного, не судите пианиста, глаза слипаются и мозг не варит((
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);
Вроде должно норм быть.. Не будет систему грузить добро это?
У вас очень криво отформатирован код. При большом количестве вложенных условий очень трудно оценить уровни вложенности условий. Располагайте if и соответственные завершающие скобки блока кода на одних вертикальных уровнях.
По-моему
islistener = 1;
у вас находится вне блока
if (islistener == 0){
.....
}
Хотя логика мне еще не ясна, но сдается, что islistener = 1 должен стоять внутри...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.