Показать сообщение отдельно
Старый 22.10.2014, 13:59
timm вне форума Посмотреть профиль Отправить личное сообщение для timm Найти все сообщения от timm
  № 1  
Ответить с цитированием
timm

Регистрация: May 2013
Сообщений: 15
По умолчанию HTMLLoader: отмена скролла страницы через клавиши и не срабатывающее событие keyDown

Мне надо, чтобы в добавленном на сцене HTMLLoader нельзя было прокручивать страницу посредством клавиш-стрелок — это стандартное поведение в браузерах, и во встроенном в AIR WebKit тоже не исключение. Однако в моём приложении эти клавиши-стрелки отвечают за другую функцию.

В среде AIR я подписался на событие keyDown у stage.
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardHandle);
В JS-скрипте для HTMLLoader`а я тоже подписался на событие keyDown для объекта window, чтобы отменить стандартное поведение (скролл) для клавиш-стрелок.
JS-код:
Код:
$(function() {
	window.onkeydown = function(e) {
	    switch(e.keyCode){
	        case 37: // Клавиши 
	        case 39: // Стрелки
	        case 38: // ...
	        case 40: // ...
				e.preventDefault(); 
			break;
	        
	        default: break;
	    }
	};
});
Теперь если кликнуть на сцене по объекту HTMLLoader (наверное он получает какой-то фокус), глобальное событие keyDown для stage перестаёт срабатывать. В JS-то событие отменяется, но среды AIR это же не должно касаться, я же ведь подписался на stage. В чём может быть причина?

Версия AIR — 3.7.