script.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. var player;
  2. var litColor = '#eee';
  3. var dimmedColor = '#555';
  4. var interval;
  5. for (var i = 0; i < ids.length; i++) {
  6. drawBar(ids[i]);
  7. }
  8. function drawBar(id) {
  9. var canvas = document.getElementById(id);
  10. canvas.height = canvas.height; //clear
  11. var context = canvas.getContext("2d");
  12. if (current_id == id && player) {
  13. context.fillStyle = dimmedColor;
  14. context.fillRect(0, 9, 700, 2);
  15. var loaded_start = player.getVideoStartBytes() / player.getVideoBytesTotal() * 700;
  16. var loaded_length = player.getVideoBytesLoaded() / player.getVideoBytesTotal() * 700;
  17. context.fillStyle = litColor;
  18. context.fillRect(loaded_start, 9, loaded_length, 2);
  19. var current_time = player.getVideoStartBytes() + player.getCurrentTime();
  20. var current_pos = current_time / player.getDuration() * 690 + 5;
  21. context.beginPath();
  22. context.arc(current_pos, 10, 5, 0, Math.PI * 2, false);
  23. context.closePath();
  24. context.fill();
  25. } else {
  26. context.fillStyle = dimmedColor;
  27. context.beginPath();
  28. context.arc(5, 10, 5, 0, Math.PI * 2, false);
  29. context.closePath();
  30. context.fill();
  31. context.fillRect(0, 9, 700, 2);
  32. }
  33. }
  34. function onYouTubePlayerReady(playerId) {
  35. player = document.getElementById('player');
  36. player.addEventListener('onStateChange', 'onStateChange');
  37. }
  38. function onStateChange(state) {
  39. switch (state) {
  40. case 1: //playing
  41. interval = setInterval(drawBar, 100, current_id);
  42. break;
  43. case 0: //ended
  44. showPlay(current_id);
  45. case -1: //unstarted
  46. case 2: //paused
  47. case 3: //buffering
  48. case 5: //cued
  49. clearInterval(interval);
  50. }
  51. }
  52. function play(yid) {
  53. if (current_id != yid) {
  54. player.loadVideoById(yid, 0, 'hd720');
  55. drawBar(current_id, dimmedColor);
  56. current_id = yid;
  57. }
  58. if (player.getPlayerState() in {'-1':1, '0':1, '5':1}) { // unstarted, ended, cued
  59. player.seekTo(0, true);
  60. }
  61. player.playVideo();
  62. for (var i = 0; i < ids.length; i++) {
  63. if (ids[i] == yid)
  64. showPause(ids[i]);
  65. else
  66. showPlay(ids[i]);
  67. }
  68. }
  69. function pause(yid) {
  70. if (current_id != yid)
  71. return
  72. player.pauseVideo();
  73. showPlay(yid)
  74. }
  75. function stop(yid) {
  76. if (current_id != yid)
  77. return
  78. player.stopVideo();
  79. showPlay(yid)
  80. }
  81. function showPlay(yid) {
  82. var play = document.getElementById('play_' + yid);
  83. var pause = document.getElementById('pause_' + yid);
  84. play.style.display = 'inline';
  85. pause.style.display = 'none';
  86. }
  87. function showPause(yid) {
  88. var pause = document.getElementById('pause_' + yid);
  89. var play = document.getElementById('play_' + yid);
  90. pause.style.display = 'inline';
  91. play.style.display = 'none';
  92. }