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

Contemplator 02.08.2010 19:17

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

И так... есть события: нажатие одной из клавиш пробела, "pause/break" и "P"... есть слушатель... есть функция...
Код AS1/AS2:

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

Цитата:

Сообщение от mooncar (Сообщение 926570)
Нажатие правой кнопки мыши? Вы ничего не путаете?
Нажатие ЛКМ соответствует событию onMouseDown, правую вы никак обработать не сможете.

эээм... 37 в тени, дым закрывающий обзор в радиусе 15 метров, запах гари, пачка цитрамона в день - всё это, конечно, пагубно сказывается на работе моего мозга, но всё же...
в таких консрукциях по нажатию правой клавиши мыши ф-я pauseOn() вызывается:
Код AS1/AS2:

onEnterFrame = function () {
        if (Key.isDown(2)){
                pauseOn();
        };
};

Код AS1/AS2:

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

Код AS1/AS2:

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/...ml#RIGHT_CLICK
это в AIR
а так, через ContextMenuEvent.MENU_SELECT можно ловить.

Contemplator 03.08.2010 12:12

Цитата:

Сообщение от alexcon314 (Сообщение 926690)

спасибо ;)


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

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