2013-05-02 12 views
8

Używam JWPlayer. Po skonfigurowaniu gracz muszę dodać słuchaczy do pewnych zdarzeń, aby dać przykład ja wysłuchać events.JWPLAYER_MEDIA_TIME tak:Jak usunąć obsługę zdarzeń z instancji JWPlayer?

jwplayer('video-container').onTime(this.onTimeHandler); 

Po chwili muszę usunięcie tego zdarzenia słuchacza, czytając documentation Nie mogłem t znaleźć żadnego rozwiązania.

+0

wypróbowałeś 'jwplayer ('kontener wideo'). OnTime (null);' ?? – yogi

+0

hi @yogi, to nie działa. 'Jwplayer.onTime()' wiąże funkcję do zdarzenia, nie mogę znaleźć sposobu na usunięcie tego powiązania ... –

Odpowiedz

8

Looking at the code, nie wydaje się możliwe usunięcie detektora zdarzeń: wywołanie zwrotne jest przekazywane do tablicy po wywołaniu onTime (lub dowolnej innej metody konfigurowania programów obsługi zdarzeń), więc wywołanie go po raz drugi nie powoduje t nadpisuje poprzedni detektor, ale po prostu dodaje nowego słuchacza do tablicy.

Być może alternatywą mogłoby być ustawić flagę raz słuchacz nie musi wykonywać swoje zadania już:

onTimeHandler : function() { 
    if (! this.handleOnTimeEvents) 
    return; 
    ... 
} 
+0

Dziękuję @robertklep, to właśnie robię atm, ale musiałem znaleźć sposób całkowitego usunięcia detektora, nie wygląda ładnie, jeśli dodasz kilku detektorów do onTime (które są wywoływane około 10 razy na sekundę) i dodajesz globalne flagi, które uniemożliwią wykonanie kodu. Jak powiedział 'it_works! = Is_pretty';) (głosowano za tym, by dać skuteczne rozwiązanie) –

0

Oto jak ja sobie z nią. Utwórz funkcję pseudo, której jedynym celem jest być wskaźnikiem. I zajmował się onComplete imprezy, więc napisałem kod jak tak poniżej:

function createJWPlayer(surl, stitle, autos, pw, ph) { 
    jwplayer("videocontainer").setup({ 
     file: surl, 
     title: stitle, 
     width: pw, 
     height: ph, 
     autostart: autos, 
     stretching: "uniform", 
     skin: "/Scripts/JWPlayer/six.xml" 
    }); 
    jwplayer().onComplete(function (e) { 
      jwcompleteevent(e); 
     }); 
} 

function jwcompleteevent(e) { 
    // method to remain empty, sole purpose is to provide a pointer for the handler 
} 

Następnie w funkcji gdzie ja go stworzył, to pisałem:

var mcomplete = (selobj.HasQ == false) ? InterActNoTimeAutoS : jwpCompleteInterA; 
createJWPlayer(selobj.Upath, ti.TestTitle, true, "100%", "100%"); 
jwcompleteevent = mcomplete; 

Gdybym musiał załadować inny wideo, zrobiłbym to

mcomplete = (selobj.HasQ == false) ? InterActNoTimeAutoS : jwpCompleteInterA; 
jwcompleteevent = mcomplete; 
loadJwPlayerUrl(selobj.Upath, true); 

Jeśli ktoś widzi problem z tym, proszę mi powiedzieć, wydaje się działać jak potrzebne w środowisku programistycznym

Powiązane problemy