2013-03-07 49 views
0

我試圖讓一個YouTube視頻無聲地循環播放。然後,當用戶點擊暫停時,重新啓動視頻並播放完整音量。onStateChange函數結束之前觸發的YouTube API暫停

這是我採取的方法。

var flag = 1; 
    var tag = document.createElement('script'); 
    tag.src = "http://www.youtube.com/player_api"; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

    var player; 

    function onYouTubePlayerAPIReady() { 
     player = new YT.Player('player', { 
      playerVars: { 'autoplay': 1, 'controls': 1,'autohide':1,'wmode':'opaque' }, 
      videoId: '[CODE]', 
      events: { 
       'onReady': onPlayerReady, 
       'onStateChange': onPlayerStateChange, 
      } 
     }); 
    } 

    function onPlayerReady(event) { 
     event.target.playVideo(); 
     event.target.mute(); 
    } 

    function onPlayerStateChange(event){ 
     //alert('State changing!'); 
     if (event.data == 0){ 
      alert('Play over'); 
      player = new YT.Player('player', { 
       playerVars: { 'autoplay': 1, 'controls': 1,'autohide':1,'wmode':'opaque' }, 
       videoId: '[CODE]', 
       events: { 
        'onReady': onPlayerReady, 
        'onStateChange': onPlayerStateChange, 
       } 
      });  
     } 
     else if(event.data == 2) 
     { if(flag == 1) 
      { 
       alert('Play loud!'); 
       event.target.stopVideo(); 
       event.target.clearVideo(); 
       event.target.seekTo(0); 
       event.target.setVolume(100); 
       flag = 4; 
      } 
     } 
    } 

我的問題是,在視頻結束它觸發onPlayerStateChange與暫停(event.data == 2),它觸發播放結束(event.data == 0)前。

這是自然的還是隻是我。我不覺得「停頓」是否會觸發?

你採取了類似的方法嗎?我能知道你做了什麼嗎?

在此先感謝。

+0

這不是對問題的回答,而是對您的代碼的評論:無需創建新的「YT.Player」對象。你可以在現有的'YT.Player'對象上調用'loadVideo()'方法。 – 2013-03-14 20:43:30

回答

1

在結束狀態非常標準之前熄滅暫停狀態。只要我記得,這一直在發生。儘管如此,我們並不保證一直保持這種狀態。