PDA

Просмотр полной версии : обработка нажатия правой клавиши мыши


Contemplator
02.08.2010, 19:17
Зачастил я сегодня... ещё пару-тройку дней буду частенько постить темы, похоже...

И так... есть события: нажатие одной из клавиш пробела, "pause/break" и "P"... есть слушатель... есть функция...
var keyListenerPause:Object = new Object();
Key.addListener(keyListenerPause)
keyListenerPause.onKeyDown = function():Void {
if ((Key.isDown(Key.SPACE)) || (Key.getCode() == 19) || (Key.getCode() == 80)) {
if (pauseID == false) {
pauseOn();
} else {
pauseEnd();
}
}
};
всё работает... хочу что б так же как и нажатие любой из описанных клавиш обрабатывалось нажатие правой кнопки мыши (т.е. включалась пауза во флешке), дописываю в условии if'a "||(Key.isDown(2))" - но пауза не включается при выполнении этого условия (все остальные нажатия клавиш обрабатываются нормально, понятное дело)...

где напортачил?

mooncar
02.08.2010, 19:32
Нажатие правой кнопки мыши? Вы ничего не путаете?
Нажатие ЛКМ соответствует событию onMouseDown, правую вы никак обработать не сможете.

Contemplator
02.08.2010, 19:39
Нажатие правой кнопки мыши? Вы ничего не путаете?
Нажатие ЛКМ соответствует событию onMouseDown, правую вы никак обработать не сможете.
эээм... 37 в тени, дым закрывающий обзор в радиусе 15 метров, запах гари, пачка цитрамона в день - всё это, конечно, пагубно сказывается на работе моего мозга, но всё же...
в таких консрукциях по нажатию правой клавиши мыши ф-я pauseOn() вызывается:
onEnterFrame = function () {
if (Key.isDown(2)){
pauseOn();
};
};

onEnterFrame = function () {
if (ASnative(800, 2)(2)) {
pauseOn();
}
};
Но мне ни к чему обременять onEnterFrame лишней проверкой, да и присобачить это дело хотелось бы именно к той ф-ии =(

вот и думаю: как так-то? =(

Psycho Tiger
02.08.2010, 19:40
А тут смотрите какая ерунда: onKeyDown вызывается от клавиатуры, а мышка не есть клавиатура. Но при этом правая кнопка мышки имеет keycode 2 )

mooncar
02.08.2010, 19:49
Psycho Tiger, интересно, не знал.
Проверил (флешка stanalone) - не работает, вызывается стандартное меню плеера и все...

NoCD
03.08.2010, 02:29
this.onEnterFrame = function() {
if (ASnative(800, 2)(1)) {trace("Левая кнопка");textOut("Левая кнопка");}
if (ASnative(800, 2)(2)) {trace("Правая кнопка");textOut("Правая кнопка");}
if (ASnative(800, 2)(4)) {trace("Средняя кнопка");textOut("Средняя кнопка");}
if (ASnative(800, 2)(5)) {trace("Левая кнопка (дополнительная)");textOut("Левая кнопка (дополнительная)");}
if (ASnative(800, 2)(6)) {trace("Правая кнопка (дополнительная)");textOut("Правая кнопка (дополнительная)");}
};

function textOut(txt){

var txt_c = _root.createTextField("txt",1000,100,100,200,30);
txt_c.text= txt;

txt_c.textColor=0x000000;
txt_c.selectable=false;

var format=new TextFormat();
format.size = 24;
format.font = "Arial";
txt_c.setTextFormat(format);
}

alexcon314
03.08.2010, 08:49
Psycho Tiger, кнопка - она и на мышке кнопка, вот onKeyboardMove - это ерунда)).
Contemplator, в АС2 только через enterFrame + Key.isDown(2).

Contemplator
03.08.2010, 11:38
Всем спасибо за ответы и разъяснения...
Печально что от реверсивных ф-й в данном случае не избавиться =(

alexcon314, а в AS3 как с этим делом всё обстоит? (ну так, на будущее что б знать...)

alexcon314
03.08.2010, 11:55
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/MouseEvent.html#RIGHT_CLICK
это в AIR
а так, через ContextMenuEvent.MENU_SELECT можно ловить.

Contemplator
03.08.2010, 12:12
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/MouseEvent.html#RIGHT_CLICK
спасибо ;)

alexcon314
03.08.2010, 12:24
хм.. зациклились

var my_cm:ContextMenu = new ContextMenu();
function menuHandler(obj:Object, menu:ContextMenu) {
trace("RIGHT CLICK");
myTextField.text = "RIGHT CLICK";
}
my_cm.onSelect = menuHandler;
this.menu = my_cm;

Contemplator
03.08.2010, 15:43
хм.. зациклились

var my_cm:ContextMenu = new ContextMenu();
function menuHandler(obj:Object, menu:ContextMenu) {
trace("RIGHT CLICK");
myTextField.text = "RIGHT CLICK";
}
my_cm.onSelect = menuHandler;
this.menu = my_cm;
то что нужно! =))
спасибо ещё раз!
сам бы я не додумался до такого =)