3

[編集:すでに回答した人には申し訳ありませんが、睡眠不足の状態で、この特定の状況がYouTube映画であり、JWFLVプレーヤーではないことを忘れました。YouTubeの映画とのやり取りに関するより広範なドキュメントがあることがわかりますので、それを追求しますが、それ以上の情報も歓迎します]

jQueryサイクルプラグイン( http://malsup.com/jquery/cycle/ )を使用してローテーションされているdivのコレクションに埋め込まれたYouTubeビデオを使用しています。

映画の1つをクリックして再生を開始したときにサイクルを停止したいのですが、jQueryイベントハンドラーをプレーヤーオブジェクトにアタッチする方法がわかりません。

現在のコードは次のようになります(jQueryでオブジェクトタグを直接選択することはできないため、親divを選択してから、オブジェクト要素を最初の子として取得します)。

$("div.feature-player").children(":first").click(function(event) {
   $('#features').cycle('stop');
});

しかし、それではうまくいきません。私はFlashの作成者ではないため、ActionScriptに精通しておらず、JavaScriptとFlashムービーの相互作用をこれまでに設定したことはありません。

4

4 に答える 4

10

YouTubeプレーヤーAPIは非常に単純です。イベントをリッスンしonStateChange、状態に応じてサイクルプラグインを制御する必要があります。

動作するデモは次のとおりです:http://jsbin.com/izolohttp://jsbin.com/izolo/editから編集可能)

そして、関連するコード:

function handlePlayerStateChange (state) {
  switch (state) {
    case 1:
    case 3:
      // Video has begun playing/buffering
      videoContainer.cycle('pause');
      break;
    case 2:
    case 0:
      // Video has been paused/ended
      videoContainer.cycle('resume');
      break;
  }
}

function onYouTubePlayerReady(id){
  var player = $('#' + id)[0];
  if (player.addEventListener) {
    player.addEventListener('onStateChange', 'handlePlayerStateChange');
  }
  else {
    player.attachEvent('onStateChange', 'handlePlayerStateChange');
  }
}
于 2009-10-07T01:31:56.157 に答える
1

JavaScriptに関する限り、Flashムービーはほとんどブラックボックスです。使用しているSWFがjavascriptと対話するように作成されていない場合は、おそらく運が悪いでしょう。

使用しているムービーが公開するjavascriptメソッドを把握する(できればドキュメントがある)か、javascriptインタラクションを提供する別のメソッドを見つける、それを処理する独自のSWFを作成する必要があります。

于 2009-10-06T20:01:17.177 に答える
0

探しているのは、フラッシュからjavascriptへ、およびjavascriptからフラッシュへの通信に使用されるflashExternalInterfaceクラスです。

于 2009-10-06T19:40:19.200 に答える
0

swfobjectを使用してプレーヤーを埋め込む場合は、 swfobject.getObjectByIdを使用してムービーへの参照を取得します。ドキュメントを読んで、これを行う必要がある理由を確認してください。

また、クリックイベントをJavaScriptにバブルアップするには、プレーヤーに{wmode:"transparent"}を設定する必要があります。

于 2009-10-06T20:00:32.947 に答える