私はYoutube Iframe Javascript APIを使用してアプリケーションを開発中です。別のアプリケーションからの入力に基づいてビデオを再生または一時停止する必要があります(アプリケーションの呼び出しと呼ばれます)。私はまた、このYoutubeプレイヤー(プレイしたか一時停止したかに関わらず)から更新を取得し、呼び出し元のアプリケーションを更新する必要があります。コードで呼び出されるアクションリスナーとユーザーを区別する方法は?
ここで問題は、あなたのチューブプレイヤーがユーザーアクションで再生されているのか、Callingアプリケーションの入力に基づいているのかを区別する方法です。両方ともアクションリスナを呼び出すためです。呼び出し元のアプリケーションで再生すると、呼び出し元のアプリケーションを再度更新する必要はありません。例えば
:
ケース1:アプリケーションを呼び出す
- は、ユーチューブのプレイヤーにプレイ要求を送信します。
- 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を送信します。これには、プレーヤーに適用する必要があるプレーヤーの状態が含まれます。コードを更新します。 –