Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.1.156] |
|
Сообщ.
#1
,
|
|
|
Господа, КАК отключить повторения при нажатии на клавишу ? А то я задумал игруху написать, а из-за клавы плохо получается...
|
Сообщ.
#2
,
|
|
|
Странный вопрос... Если повторений не будет, то как прога узнает что юзер кнопу держит?
А если клавиатуру на себя перехватить то вопрос об отключении вообще не стоит :-) |
Сообщ.
#3
,
|
|
|
Наверняка тело такое:
Repeat until keypressed; ..:=readkey; Попробуй между этими строками сделать временную задержку(Delay(50)),или просто проверь в короткий промежуток времени повторное нажатие с помощью Timer/А так и с Delay должно пойти. |
Сообщ.
#4
,
|
|
|
Почаще очищай буфер ввода:
While KeyPressed do ReadKey; ...или так... MemW[$40:$1A] := MemW[$40:$1C]; |
Сообщ.
#5
,
|
|
|
Кстати, если тебе не нужно обрабатывать нажатия сразу нескольких клавиш, то можно и не "вешаться" на Int 9 (как я писал об этом в "Основном" разделе), а просто периодически читать из Port[$60] байт и всё...
Хотя здесь может быть такой глюк: если держишь, например, стрелку "вправо", а потом резко жмёшь "влево", то скорее всего кнопку "вправо" ты отпустишь после нажатия кнопки "влево" . Следовательно из $60 порта ты на время первой клавиатурной задержки будешь получать код "отпущенной кнопки вправо" (77+128), а потом уже код кнопки "влево"... Короче, надеюсь, понятно выразился )) Мораль басни: лучше всё-таки первый спобос (который в "Основном" разделе). Тогда возникает второй вопрос... Нахрена я это написал? |