На Yahoo! также ответилиПодключенные телевизионные форумы: http://developer.yahoo.net/forum/?showtopic=7383 Да, вы на правильном пути.Медиаплеер является одноэлементным и не привязан к какому-либо конкретному виду.Вы можете определить слушателя, который подписывается на него в глобальном контексте выполнения виджета.Таким образом, вы все еще можете получать и обрабатывать события, которые происходят, когда представление является gc'd, и вы все равно можете получать эти события.лучшая практика).
<code>
EventHandlers.handlerPlayerEvent.subscribeTo(KONtx.mediaplayer, ['onStateChange', 'onTimeIndexChanged'], EventHandlers);
Затем в Javascript / core / EventHandlers.js:
var EventHandlers = {</p>
<pre><code> //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.remove ('фрагмент-nowplaying');this._snippetAdded = false;перерыв;} break;
case 'onTimeIndexChanged':
//do something interesting;
break;
}
}
};
Я должен также добавить, что если вы подписываетесь на события в представлении, очень важно также отписаться от них в слушателе вида HideView.Это может предотвратить утечки памяти и другие нежелательные действия.