我正在使用Youtube Iframe Javascript API處理應用程序。我必須根據來自其他應用程序的輸入播放或暫停視頻(稱爲調用應用程序)。我也必須從這個Youtube播放器(無論是播放還是暫停)更新並更新調用應用程序。如何區分由代碼和用戶調用的動作偵聽器?
現在的問題是如何區分用戶操作或基於來自Calling應用程序的輸入播放管樂器。因爲他們都調用動作偵聽器。當由調用應用程序播放時,我不希望調用應用程序再次更新。
例如:
案例1:
- 調用應用程序發送播放請求YouTube播放器。
- Youtube播放器正在播放。
- onStateChange偵聽器被調用。
- 調用應用程序會收到玩家狀態已更改的通知。 (我不希望發生這種情況)。
案例2:
- 用戶點擊播放播放器上的按鈕。
- Youtube播放器正在播放。
- onStateChange偵聽器被調用。
- 調用應用程序會收到玩家狀態已更改的通知。 (我希望這發生)。
我可以當程序調用它與開關變量做到這一點,當用戶調用它禁用它。但是這種情況太多了,我不能指望所有的開發人員在考慮所有這些情況時處理它。
所以我需要一個正確的方式讓動作偵聽器知道用戶是否調用了該動作或程序是否調用了該動作。在API中是否有內置的方法來執行此操作?
function callback(responseText) {
var response=JSON.parse(responseText.body);
var player = getPlayer();
var seekAhead = true;
switch (response.playerState) {
case YT.PlayerState.PLAYING:
player.seekTo(response.seconds,seekAhead);
player.playVideo();
break;
case YT.PlayerState.PAUSED:
player.seekTo(response.seconds,seekAhead);
player.pauseVideo();
break;
case YT.PlayerState.BUFFERING:
break;
case YT.PlayerState.ENDED:
break;
}
使用一個變量來管理交換機的問題是,當主叫應用程序發送一個播放狀態,有一個呼叫seekTo它調用暫停,緩衝劑和玩事件。他們需要一段時間才能完成,但可變開關在第一個事件中切換。
你的代碼在哪裏? 「*呼叫應用程序向YouTube播放器*發送播放請求」是如何實現的? – RobG
調用應用程序發送一個json。它包含需要應用於玩家的玩家狀態。我會更新代碼。 –