Форум 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)
-   -   [keys] left shift & right shift (http://www.flasher.ru/forum/showthread.php?t=93133)

$mival 14.03.2007 16:35

[keys] left shift & right shift
 
Поковырял поиск - видимо никто этим не заморачивался.
Цель: отлавливать нажатия левого и правого shift'ов с клавиатуры и выполнять соответствующие КАЖДОМУ shift'у отдельные действия. На сколько я понимаю, у shift'а (левого и правого) один и тот же ASCII код. Это поставило меня в тупик. Что делать?

etc 14.03.2007 16:53

Отлавливать чем-нибудь сторонним, если получится.
Сам флеш не при делах.

$mival 14.03.2007 16:58

флешка будет броузерная.
JS, VB?

etc 14.03.2007 17:07

Я думаю, VB.
JS сомнительно, что такие ньюансы отловит.

silin 14.03.2007 20:29

Код:

Key.addListener(this);
function onKeyDown(){
        if(Key.isDown(Key.SHIFT)){
                trace( Key.isDown(160) ? "left" : "right");
        }
}


etc 14.03.2007 20:40

Круто! Надо было отлавливать isDown :D
Лень было экспериментировать. Практика превыше всего.

iNils 14.03.2007 20:50

Только не понятно, причем тут неразрывный пробел или для клавиатуры код 160 что-то другое?

silin 14.03.2007 20:53

да как бы все логично: shift отдаeт/генерит не один, а два кода, второй может и совпадать с чем угодно..

etc 14.03.2007 21:04

Интересно, а как ты получил 160? Трейс getCode выдает 16 всегда.

iNils 14.03.2007 21:06

Все понял. Вот дополнительные коды для shift и ctrl
shift left 160
shift right 161
ctrl left 162
ctrl right 163

silin 14.03.2007 21:08

просто перебором
Код:

function onEnterFrame(){
        for(var i=0;i<256;i++) if (Key.isDown(i)) trace(i);
}


etc 14.03.2007 21:09

Понятно, метод тыка, значит :D
Что ж, хороший ход :D
Респект.

iNils 14.03.2007 21:10

Почти также :)
Код:

Key.addListener (this);
function onKeyDown () {
        if (Key.isDown (16) || Key.isDown (17)) {
                for (var i = 0; i < 255; i++) {
                        if (Key.isDown (i)) {
                                trace (i);
                        }
                }
        }
}


etc 14.03.2007 21:11

А true зачем? Просто для прикола? :D

iNils 14.03.2007 21:17

Убрал, это рудимент от первоначального моего кода.

$mival 14.03.2007 22:03

Цитата:

Сообщение от iNils
Все понял. Вот дополнительные коды для shift и ctrl
shift left 160
shift right 161
ctrl left 162
ctrl right 163

Тогда понятно :umnik2:
А я тоже на трейсе подкололся, который код 16 выводил для обоих shift'ов! :D


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

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