PDA

Просмотр полной версии : задание keyPress ASCII-кодом


AJIxuMuK
30.03.2004, 01:30
Хочу сделать, чтобы кнопка реагировала на Shift, Ctrl, F2...
Так как для этих кнопок в keyPress нет констант, типа "<Left>", "<Home>", "<Enter>", "<Tab>", то их я задаю escape последовательностью. Но при задании escape последовательностью работают только ASCII-коды A-Z, a-z, Space... , а если использовать коды других клавиш, которые мне нужны (Shift, Ctrl, F2...), либо выдаёт ошибку "Invalid key code.", либо при нажатии клавиши ничего не происходит.

Вот например рабочий код для Space:

// Space - '\x20' - '\u0020' -'\040'

on (keyPress '\x20') {
trace("feel");
}


Что не так :confused: ?

AJIxuMuK
31.03.2004, 20:49
Неужели никто не знает :rolleyes: ?
Или ответить лениво?

Хоть что-нибудь по сабжу напишите.

styx
31.03.2004, 21:05
У этих кнопок нет ASCII-кода. Нужно:

onClipEvent (keyDown)
{
trace(Key.getCode());
}

AJIxuMuK
31.03.2004, 21:26
Оригинал написал(а) styx
[B]У этих кнопок нет ASCII-кода.


Открываем доки к Flash MX; читаем следующее:

Клавиши клавиатуры и их коды, введение

Последующие таблицы перечисляют все клавиши на стандартной клавиатуре и соответствующие значения их ASCII-кода, которые используются для идентификации клавиш в ActionScript.
...

F2 113
Tab 9
Shift 16
...


И Key.getCode() тебе то же самое скажет. :)

styx
02.04.2004, 12:49
Ммм... Дока действительно отвечает, что это ASCII коды. Хотя Win32 SDK утверждает обратное:
... Specifies a virtual key. If the desired virtual key is a letter or digit (A through Z, a through z, or 0 through 9), nVirtKey must be set to the ASCII value of that character. For other keys, it must be a virtual-key code.
Но так или иначе, для специальных клавиш, таких как Shift, не генерируется событие KeyPress, а только KeyDown и KeyUp.