Работа с формой / фокусом с помощью Samsung Smart TV SDK 4.0

Я нахожусь в процессе разработки приложения для Samsung Smart TV с их новейшим SDK.

У меня есть приложение на основе сцены, и теперь я хочу управлять им с помощью телевизора удалить.

Наивный подход, используя jQuerys .select() чтобы курсор переместился в одно из полей ввода, кажется, полностью отключить пульт, ошибка

тело не активировано в настоящее время... пропустить!: ВВОД

Насколько я мог узнать, это как-то связано с элементом body, имеющим onkeydown-Handler.

Это приводит к тому, что мне в основном нужно управлять состоянием фокусировки / размытия вручную, не имея возможности использовать CSS-селекторы, такие как:active,:focussed, что было бы не совсем аккуратно.

Любая помощь / ссылки на документацию / и т. Д. Будет принята с благодарностью.

Я разрабатываю приложение под Mac OS, используя эмулятор на основе VMWare.

2 ответа

Решение

Что мы делаем с нашими приложениями, так это назначаем класс активному элементу сцены. Затем, используя javascript, вы можете добавить слушателей в зависимости от того, какие элементы вашей страницы активны.

Например, когда приложение загружается, вы можете назначить активный класс первой кнопке на странице вашего HTML. Затем вы можете прослушивать кнопки на пульте дистанционного управления, чтобы кнопка "вниз" изменяла активное состояние на следующую кнопку в сцене.

//key press listener for remote
SceneScene1.prototype.handleKeyDown = function (keyCode) {
    //find the key code you are looking for
    switch (keyCode) {
        case sf.key.LEFT:
        //code for left keypress
        break;

    case sf.key.RIGHT:
        //code for left keypress
        break;

    case sf.key.UP:
            //code for up keypress
        break;

    case sf.key.DOWN:
        //code for down keypress
            if ($('#button1').hasClass('active')) {
                $('#button1').removeClass('active');
                $('#button2').addClass('active');
            }
        break;

    case sf.key.ENTER:
            //code for enter keypress
        break;
    }
}

Вы правы, это не кажется таким уж чистым, но примерно так же хорошо, как и при взаимодействии с пультом. Вы должны указать "сфокусированные" элементы и использовать их в качестве контекста для инструкций с пульта.

Вы можете попробовать переключить класс, если сочтете это более полезным?

Другие вопросы по тегам