Способ достижения этого действительно заключается в использовании метода getCurrentTime
в yt api, в частности, вызове его в повторяющейся функции с помощью setInterval
.
Вам нужно будет сохранить массив наложений, которые вы хотите представить, а также время от времени что-то вроде:
var overlays = [
{text:"Some text",from:1,to:6},
{text:"Some other text",from:8,to:14}];
Тогда вам понадобится пара функций для обработки воспроизведения и остановки фильма (или приостановки).
var watchId;
function startWatch(){
watchId = setInterval( function(){
showOrHideOverlay(ytplayer.getCurrentTime());
},1000)
}
function stopWatch(){
clearTimeout(watchId);
}
Вы заметите, что используется переменная ytplayer
, и согласно документации jsapi ее можно получить с помощью следующего кода:
var ytplayer ;
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
Обратите внимание, что я подключил прослушиватель событий, это приводит нас к методу обработки изменения состояния фильма
function onytplayerStateChange(newState) {
if(newState == 1){ // playing
startWatch()
}
else if(newState == 0 || newState == 2){ //ended or paused
stopWatch();
}
}
Итак, последний кусочек головоломки на самом деле обрабатывает «тик», который устанавливается каждую секунду. Этот метод showOrHideOverlay
выглядит так:
function showOrHideOverlay(time){
// find overlays which should be visible at "time"
var shownOverlays = false;
for(var i=0;i<overlays.length;i++){
if(overlays[i].from < time && overlays[i].to > time){
$('#overlay').text(overlays[i].text);
shownOverlays = true;
}
}
if(!shownOverlays)
$('#overlay').text("");
}
Наконец, живой пример: http://jsfiddle.net/zTZjU/ (Просто нажмите кнопку воспроизведения на клипе)