2012-02-21 2 views
0

Есть ли способ определить, удерживается ли колесо мыши? Мне нужно панорамировать мою сцену, пока средняя кнопка или колесико мыши не сдвинуты вниз (я думал, что удерживание колеса мыши было таким же, как средняя кнопка мыши, но это не работает).AS3 - прослушиватель MouseWheelDown

Спасибо!

ответ

0

Как насчет попробовать это:

this.onEnterFrame = function() { 
if (ASnative(800, 2)(1)) { 
trace ("You have pressed or depressed the left mouse button"); 
} 
} 

это определяет левую кнопку мыши ... если заменить аргумент (1) с (2) вы получаете правую кнопку мыши так ...

this.onEnterFrame = function() { 
if (ASnative(800, 2)(2)) { 
trace("You have pressed or depressed the right mouse button"); 
} 
} 

и если положить в (4), вы получите среднюю мышь или часто колесико ...

this.onEnterFrame = function() { 
if (ASnative(800, 2)(4)) { 
trace("You have pressed or depressed the middle mouse or wheel button"); 
} 
} 

Источник: http://www.actionscript.org/forums/showthread.php3?t=68209

PS: Я бы предложил не использовать среднюю кнопку мыши или колеса, потому что не у всех есть средняя кнопка мыши. Поэтому, если вы все еще хотите использовать удобство средней кнопки мыши, отрегулируйте свои функции соответственно, чтобы человек без средней кнопки мыши все еще мог панорамировать холст.

EDIT:

Хорошо, я сделал гадостей! Не поймал, что это должно быть для AS 3.0. Поддержка щелчка мышью средней/правой кнопки мыши больше не доступна в AS 3.0. Atleast не напрямую.

Один из способов сделать это - использовать JS для обнаружения нажатой кнопки мыши и передачи этой переменной в виде строки во Flash.

Как обнаружить щелчок мыши в JS: http://www.quirksmode.org/js/events_properties.html

Как поставить эту переменную в Flash: (ExternalInterface) http://learn.adobe.com/wiki/display/Flex/External+Interface

Или вы можете сделать это прямо через хак в AS 3.0: (ограниченная поддержка браузера & OS) http://flashpunk.net/forums/index.php?topic=2549.0

DEMO: http://www.shinyhappypixels.com/punk-forums/clicky-hook/

+0

Спасибо. Я программирую в Flash Builder. Мне нужно включить способы панорамирования моего представления. Первый уже работает, и именно тогда вы удерживаете клавишу переключения при нажатии левой кнопки мыши и перетаскивании. Но у нас есть другое программное обеспечение, где они используют среднюю кнопку мыши, поэтому я хотел бы включить это тоже. И если у них нет средней кнопки мыши, они могут использовать метод перетаскивания.=) –

+0

К сожалению, это AS1 –

1

Хотя я никогда не использовал его, есть событие MIDDLE_CLICK, которое работает только в приложениях AIR. Работает ли ваше приложение в браузере или на рабочем столе?

Кроме того, только мои 2 цента, это так чертовски неудобно использовать кнопку scrollwheel в приложении. Каждый раз, когда я вынужден сделать это в каком-то инструменте 3D-моделирования, я хочу разбить мой монитор. Я бы использовал только shift/alt/ctrl + mouse1/mouse2.

+0

Спасибо, я попробовал MIDDLE_CLICK, но он здесь не работал. Думаю, я просто оставлю это тогда. =) Shift + M1 уже реализована как панорама. Я просто хотел, чтобы у пользователя было больше опций :) –

+0

Хорошо, что это всего лишь 2 цента. Надеюсь, ты не разбил свой монитор. Я все в пользу использования средней кнопки мыши (в то время как нажата) для масштабирования в 3D. Слева: поворот, вправо: панорама, середина: увеличение. Клавиши-модификаторы для регулировки скорости или ограничения определенных направлений. Но это мои центы. – Bart

0

Это возможно с as3, наткнулся на это, так вот оно:

import flash.events.MouseEvent; 

function handleMouseWheel(event:MouseEvent):void { 

if ((event.delta > 0 && box_mc.y < 270) || (event.delta < 0 && box_mc.y > 0)) { 

box_mc.y = box_mc.y + (event.delta * 3); 

} 

} 

stage.addEventListener(MouseEvent.MOUSE_WHEEL, handleMouseWheel); 
+0

Что именно это должно делать? И что именно означает box_mc? .......... –

+0

box_mc - это мувиклип – joshua

Смежные вопросы