UNPKG

zombiebox

Version:

ZombieBox is a JavaScript framework for development of Smart TV and STB applications

31 lines (29 loc) 3.19 kB
Input processing === Обработка нажатий кнопок пульта осуществляется по принципу всплытия событий (event propagation). Местом зарождения события является InputDispatcher, который в результате взаимодействия с компонентом ввода платформы (*IInput)* производит обработку событий нажатия. При наступлении соответствующего события, внутренний код нажатой кнопки переводится в унифицированный код фреймворка и дальше передается на обработку глобальному объекту приложения. Глобальный объект приложения затем запускает погружение события нажатия по иерархии композиции слоев. Вначале будет вызван метод processKey у текущей сцены, которая при наличии в ней дочерних слоев, вызовет processKey у верхнего дочернего слоя (top child layer), в противном случае передаст обработку нажатия своему активному виджету, а тот своему и т.д. Если событие не обработано в процессе погружения, то виджет по умолчанию вызывет метод \_processKey, в котором производит обработку событий связанных с его собственной логикой. В базовой реализации виджет обрабатывает в методе \_processKey события кнопок навигации (UP, DOWN, LEFT, RIGHT). В случае, если ни на одном из уровней погружения событие не было обработано, вызывается метод  \_processKey уже непосредственно у самого глобального объекта приложения, который в случае, если нажата кнопка BACK, выполнит перемещение по истории записей назад. Так же input dispatcher отвечает за обработку курсора, если он поддерживается устройством. Для этого контейнер, после передачи в него виджета, с помощью input dispather назначает обработчики на события мышки <abbr title='Document Object Model'>DOM</abbr> элемента виджета (mouseover, click, mousewheel), при наступлении которых, виджет обрабатывает его соответствующим образом. Так, например, на событие mouseover виджет активируется, а на событие click - сэмулирует нажатие на него кнопки ENTER.