YouTube API を使用して、動画の現在の経過時間を取得しています:player.getCurrentTime();
およびplayer.getDuration();
関数; jQuery で、最大値が設定され、最小値player.getDuration
が 0 に設定されるスライダーを設定しました。
これら 2 つの関数を使用して、次のコードを作成しました。
var progress = setInterval(function(){
$("#progressbar").slider({value: Math.floor(player.getCurrentTime())});
},1000);
Youtubeビデオの経過時間でスライダーを更新します。
問題は、ビデオを一時停止すると、スライダーの値が以前の値と現在の経過時間 ( player.getCurrentTime()
) の値の間でちらつくことです。
誰か説明できますか?
編集:プレーヤーの再生状態でスライダーを更新し、プレーヤーの一時停止状態で更新機能を停止する適切なコードは次のとおりです。
function playerStateChange(newState) {
globalYtState = newState;
if(newState == 0){
$("#hSongSearcher").val('').trigger('keyup');
setTimeout(playNextVideo(),1500);
}
if(newState == 2){
clearInterval(progressUpdater);
}
if(newState == 1){
progressUpdater = setInterval(function(){
//console.log(Math.floor(player.getCurrentTime()));
if(Math.floor($("#progressbar").slider('value')) != Math.floor(player.getCurrentTime())){
$("#progressbar").slider({value: Math.floor(player.getCurrentTime())});
}
$('.current_elapsed').html(getPropperDuration(Math.floor(player.getCurrentTime())));
},1000);
}
}