Yahoo! Подключенные события воспроизведения ТВ

Я пытаюсь подписаться на onTimeIndexChanged событие медиаплеера. Это работает хорошо, пока вид, что я подписываюсь в, остается сосредоточенным. Когда я нажимаю кнопку "Назад" или кнопку "Виджеты", мое изображение становится размытым и больше не получает события.

Возможно ли, чтобы эта подписка сохранялась при смене представлений? Существуют ли подписки для всего виджета?

Я пытаюсь выяснить, можно ли посчитать время воспроизведения на стороне клиента.

1 ответ

Решение

На Yahoo! также ответили Подключенные телевизионные форумы по адресу: http://developer.yahoo.net/forum/?showtopic=7383 Да, вы на правильном пути. Медиаплеер является одноэлементным и не привязан к какому-либо конкретному виду. Вы можете определить слушателя, который подписывается на него в глобальном контексте выполнения виджета. Таким образом, вы все равно можете получать и обрабатывать события, которые происходят, когда представление является gc'd, и вы все равно можете получать эти события.

Мы помещаем эти глобальные подписки в файл init.js, чтобы они находились в центре (лучшая практика).

 
EventHandlers.handlerPlayerEvent.subscribeTo(KONtx.mediaplayer, ['onStateChange', 'onTimeIndexChanged'], EventHandlers);

Затем в Javascript / core / EventHandlers.js:


var EventHandlers = {

    //snipped for brevity;

    handlerPlayerEvent: function(event) {
            switch(event.type) {
                    case 'onStateChange':
                            switch(event.payload.newState) {
                                    case KONtx.mediaplayer.constants.states.PLAY:
                                            if(!this._snippetAdded) {
                                                    KONtx.application.addViewConfig({ id: 'snippet-nowplaying',

viewClass: VideoNowPlayingSnippetView}); this._snippetAdded = true; } перерыв; case KONtx.mediaplayer.constants.states.UNKNOWN: case KONtx.mediaplayer.constants.states.ERROR: case KONtx.mediaplayer.constants.states.STOP: case KONtx.mediaplayer.constants.states.EOF: KONtx.application.removeView('фрагмент-nowplaying'); this._snippetAdded = false; перерыв; } перерыв;

                    case 'onTimeIndexChanged':
                            //do something interesting;
                            break;
            }
    }

};

Я также должен добавить, что если вы подписываетесь на события в представлении, очень важно также отписаться от них в слушателе вида HideView. Это может предотвратить утечки памяти и другое нежелательное поведение.

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