Предотвратить изменение фокуса с помощью клавиш со стрелками в обработчике событий Flash AS2?

Я унаследовал несколько старых флэш-носителей на работе. Требования, выдвинутые клиентом, а также ограничение по времени диктуют, что мы не можем использовать что-либо выше, чем установленные параметры публикации для Flash Player 9 и ActionScript 2.0.

У меня есть компонент, который действует как панель таймера, и я пытаюсь перемотать фильм вперед или назад на 5 секунд при нажатии клавиши со стрелкой влево или вправо для доступности. Однако клавиши со стрелками влево и вправо будут перемещать фокус клавиатуры на следующий или предыдущий элемент с вкладками после срабатывания обработчика нажатия клавиши.

Как я могу остановить это? С AS3 или JavaScript я мог бы вызвать Event.preventDefault(), что, я уверен, решит проблему, но, похоже, в AS2 у меня нет такой роскоши.


person p0lar_bear    schedule 03.11.2016    source источник


Ответы (1)


Что я сделал для решения этой проблемы, по крайней мере на данный момент, так это установил свойство _focusRect панели поиска в false, а затем добавил обработчики onKillFocus и onSetFocus для удаления и добавления к нему фильтра свечения, который выглядел как желтый контур. _focusRect = false достигает того, что мне нужно, потому что он не позволяет клавишам со стрелками смещать фокус, но я могу входить и выходить из объекта с помощью клавиши Tab. Из документации для MovieClip._focusRect:

Если для свойства _focusrect установлено значение false, навигация с помощью клавиатуры для этого фрагмента ролика ограничивается клавишей Tab. Все остальные клавиши, включая Enter и клавиши со стрелками, игнорируются. Чтобы восстановить полную навигацию с помощью клавиатуры, необходимо установить для параметра _focusrect значение true.

Единственное, при этом вам нужно обязательно добавить свои собственные обработчики для взаимодействий, которые, вероятно, считаются само собой разумеющимися, например, нажатие Enter или Space.

person p0lar_bear    schedule 03.11.2016