FLVPlayback私的メモ(AS2.0)その1

※11/28 イベントを設定するタイミングを変更しました。

  • FLVPlaybackのボタンにアクションをつけたい!
  • デフォルトスキンの○○ボタンを取ったスキンがほしい!

こんな時になるべく迷わないためのメモ。

FLVPlaybackのボタンにアクションをつけたい!

FLVPlaybackの停止ボタンが押された時にほげほげしたいー!
こんな時は、以下が各ボタンのインスタンス名ですので、

  • BackButton(最初に戻るボタン)
  • ForwardButton(最後に進むボタン)
  • MuteButton(音量ON/OFFボタン)
  • PlayPauseButton(再生/一時停止ボタン)、または PlayButton(再生ボタン) と PauseButton(一時停止ボタン)
  • StopButton(停止ボタン)

こちらにイベントハンドラを割り当てる事で実行できます。

// ステージ上のFLVPlaybackのインスタンス名=「FLVP」とする

// flvの総ファイル容量を取得
var flv_total = FLVP.bytesTotal;
if (flv_total != undefined) {
	// 読み込み完了率を算出
	var flv_loaded = FLVP.bytesLoaded;
	var flv_per = Math.floor( flv_loaded / flv_total * 100 );
	//trace(flv_per); //※ムービープレビューでは一瞬でロードされてしまうのでテストになりません。
	// flvの読み込み完了時
	if (flv_per>=100) {
		/*※ロード直後だとボタンのイベントハンドラが定義されていない?ので
		   setIntervalでボタンのイベントハンドラが定義されているか一定間隔で確認*/
		myID = setInterval(function () {
			// ボタンのイベントハンドラが定義されているかどうか確認
			if ( FLVP.pauseButton.onRelease != undefined ) {
				FLVP.pauseButton.onRelease = function(){
					// デフォルトの処理が実行されなくなる?のでpauseの処理を実行
					_level0.FLVP.pause();
					// pauseボタンが押された時に行いたい処理
					hoge();
				}
				// setIntervalをクリア
				clearInterval(myID);
			}
		}, 10);
	}
}
  • まず、bytesTotal ÷ bytesLoaded で、flvファイルの読み込み完了率を算出します。
  • 完了したら、setInterval でボタンのイベントハンドラが定義されているか確認できてから設定します。
  • onReleaseの場合ボタンの元の処理も無効になる?ので実行します。
検証事項
  • FLVPをオブジェクトで生成すれば読み込みを待たずにボタンにイベントハンドラを付加できる?AS2.0はダメそうだった…
  • ボタンのデフォルトの処理が実行されなくなる方法があるかな?
参考URL