PDA

Просмотр полной версии : Еще раз о правой клавише (Right Mouse)


lakehouse
28.01.2007, 19:12
Много копий сломано о сабже, но вот одной фичи я так и не нашел - как корректно обработать событие нажатия правой кнопки:

Вот так работает все ок, но словить только 1 клик практически нереально (особенно на 32 кадрах/сек) :

_root.onEnterFrame = function() {
if (Key.isDown(2)) {
trace ('Правая клвиша');
}

А вот так просто не ловиться нажатие мыши:

_root.onMouseDown = function() {
if (Key.isDown(2)) {
trace ('Правая клвиша');
}

Да,и через Mouse.addListner та же ситуация. Единственный вариант вижу в setInterval, но это тоже кривой способ. И не надо советовать менять onMouseDown на onKeyDown - так ловиться только клавиатура.

У меня проблема встала при попытке пролистать слайды презентации в 2 строны - листатется по 2 слайда сразу.

Есть еще решения?

silin
28.01.2007, 19:21
>>но словить только 1 клик практически нереально
как вариант: хранить состояние Key.isDown(2) и реагировать только на его изменение

iNils
28.01.2007, 21:03
А зачем вам правая клавиша (в вебе)? Все равно будет выскакивать меню.

CorC
28.01.2007, 21:08
А зачем вам правая клавиша (в вебе)? Все равно будет выскакивать меню.
и я уже сижу и час недоумеваю :)
вспоминаю всяческие методы...
никак не могу понять: "зачем?"

2автор: если вы объясните может мы предложим более рациональный способ...

LeXi42006
28.01.2007, 21:14
У меня проблема встала при попытке пролистать слайды презентации в 2 строны - листатется по 2 слайда сразу.
Вроде бы понятно объяснил

lakehouse
28.01.2007, 21:16
А зачем вам правая клавиша (в вебе)? Все равно будет выскакивать меню.

Речь идет об оффлайновой презентации. Управлять ей надо только мышью. Так что меню я грохну ResHack-ом. А пока решение вот такое:

_root.onEnterFrame = function() {
if (Key.isDown(1)) {

if (prevKey1!==Key.isDown(1)){
trace ("Левая");
}

}
if (Key.isDown(2)) {
if (prevKey2!==Key.isDown(2)){
trace ("Правая");
}
}
prevKey2=Key.isDown(2);
prevKey1=Key.isDown(1);
}

CorC
28.01.2007, 21:33
не поверите!
вставил ваш код и только вместо
trace сделал Alert.show
и показвает то что надо!!!

Zone71
29.01.2007, 00:02
Опа. макромедия до сих пор не додумалась до того, что кроме левой кнопки есть еще и правая. у меня и в трейс все нормально.

CorC
29.01.2007, 00:11
Опа. макромедия до сих пор не додумалась до того, что кроме левой кнопки есть еще и правая. у меня и в трейс все нормально.
нет она додумалась, просто зачем портить всю картину при помоши ПКМ? :)

Zone71
29.01.2007, 01:16
нет она додумалась, просто зачем портить всю картину при помоши ПКМ? :)
Есть программы в которых вполне нормально использовать ПКМ, как в случае автора поста. Только вот нормально флэш пока что не может даже захватить нажатие не говоря об обработке (по крайней мере до AS2 включительно). а так только для контекстного меню и все.:moder:

lakehouse
29.01.2007, 01:54
Flash - это лучший наркотик - никогда не знаешь где и когда тебе вставит. Так что решил я все кодом, указанным выше, а меюшку грохнул ResHack-ом. Вот только так все это криво. Тем не менее всем спасибо за дискусию, а silin - отдельный спасиб за решение.

silin
29.01.2007, 20:29
еще вариант:
var menu=new ContextMenu(function(){trace("Right Click");});