![]() |
Control препятствует нажатию клавиш вверх и вниз
Уже почти полгода пишу военную стратегию, написал огромное количество кода, и вот вчера заметил ону неприятную особенность клавиатурных событий.
К главному контейнеру, в котором происходят все боевые действия добавлены слуаштели KEY_UP и KEY_DOWN, ну и естественно обработчики событий. Раньше игровая техника, солдаты и пр. управлялись мышкой, недавно добавил так же WASD управление + стрелки, ну и естественно контрол, шифт и т.п. Чтобы не загромаждать классы транспорта обработчиками событий и не вешать лишних слушателей, все они обрабатываются в специальном классе-конструкторе, а в каждом транспортном средстве есть метод: Код AS3:
Вот так обрабатываются нажатия клавишь в классе конструкторе: Код AS3:
Как ни старался, обойти этот косяк пока не удалось. Если кто-то подскажет какое-то решение, буду безмерно благодарен. И кстати, это происходит в дебаговом плеере. Если запустить в отдельном, то не работают стрелки влево и вправо, а вверх вниз начинат работать. Уже и не знаю куда копать.. |
В обработчике у event может быть только одно значение keyCode, поэтому проверять на равность кода к контролу, а потом к другому коду - бесполезно.
Код:
KeyboardEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = false, charCode:uint = 0, keyCode:uint = 0, keyLocation:uint = 0, [COLOR="rgb(0, 191, 255)"]ctrlKey:Boolean = false[/color], altKey:Boolean = false, shiftKey:Boolean = false)Цитата:
И еще, не надо писать кучу отдельных if, надо писать if - else, иначе после первого же совпадения, вы в холостую будете продолжать сравнивать коды. А еще лучше для такого подойдет switch-case |
iNils, не внимательно читаете ;)
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
------------------ позже ------------ Нет, ничего не меняется :( Похоже это косяк флеш плеера, а не моего кода. Так как убираю из кода вообще все, что связано с контролом, и все равно клавиши перестают работать при нажатии ктрл Добавлено через 50 минут Проблема найдена! :) Это действительно косяк флеш плеера, который исправлен в новой версии. Скачал с офсайта новый плеер и вуаля. Всё пашет! Тему можно закрыть. |
goodguy, для того что бы внимательно читать, нужно код с нормальным форматирование выкладывать. Когда я вижу, что код смещен табуляций относительно первой строчки, то он автоматически считается вложенным.
Цитата:
Когда возникают подобные ошибки в большом коде, открываете новый проект и выносите туда проблемную часть в упрощенном виде. То есть вам нужно просто проверить реакцию на клавиши. Типа этого Код AS3:
Но я кажется понял в чем проблема. Вы наверно в Flash IDE разрабатываете, а там комбинация ctrl+стрелки перехватывается интерфейсом плеера. Вам нужно в меню плеера отключить это: Control > Disable Keyboard Shortcuts |
Цитата:
Цитата:
Цитата:
Цитата:
---- позже---- аа, так это в самом плеере, а я в ide ищу :D Помогло! Спасибо! :) Теперь и в дебаговом плеере все работает |
standalone должны работать up и down, а left и right зарезервированы для управления.
попробуйте добавить Код AS3:
|
| Часовой пояс GMT +4, время: 21:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.