Кодирование нажатий клавиш в битах в uint - PullRequest
0 голосов
/ 09 мая 2011

Эй,
Я пытаюсь закодировать определенные значения, которые я получаю от события клавиатуры.
В основном я хочу проверить, была нажата определенная комбинация клавиш или нет, поэтому для этого я преобразую коды клавиш впоследовательность / шаблон и сохранить его в объекте и в значении (функции) для каждой кодовой последовательности.
Теперь мне нужно использовать четыре байта, и в первом байте (MSB) я должен хранить shift, alt, ctrl соответственно и впоследний (LSB) я должен сохранить код нажатой клавиши.
Вот код:

private function m_encodeValue(key:String, Ctrl:Boolean = true, Alt:Boolean = true, Shift:Boolean = false):uint
        {
            var encodedValue:uint;

            encodedValue = uint(Shift) << 2 | uint(Alt) << 1 | uint(Ctrl);

            encodedValue = encodedValue | (uint(key.toUpperCase().charCodeAt(0)) << 24);

            return encodedValue;
        }

1 Ответ

0 голосов
/ 10 мая 2011

Я сохраняю последовательность в объекте и соответствующее ему значение, которое является ссылкой на функцию, затем, когда нажимается определенная комбинация клавиш, она преобразуется в последовательность и сверяется с теми записями, после которых вызывается функция.
Что я делал не так, я использовал событие Key_down , вместо этого я использовал Key_up , так что теперь все значения, скажем ctrl + atl + v, отправляются в объект события полностью. Принимая во внимание, что в случае Key_down при каждом нажатии клавиши происходило событие, затрудняющее выбор нужных мне кодов клавиш.

...