MEMOUK

ActionScript2.0 FLVPlaybackコンポーネントの ready は環境依存するかも

.flv FlashVideoファイルを再生する時に便利なのが FLVPlaybackコンポーネントです。
flvc1.gif

ActionScript2.0用とActionScript3.0用があります
だいたい機能は同じですが、ActionScript2.0用にはちょっとしたクセ?(仕様)があります


FLVファイルの再生準備が出来たかどうかを知る方法として
FLVPlayback.ready
「FLV ファイルがロードされ表示準備ができたときに送出されます。」

というイベントがあります。

ヘルプの使い方によると

var listenerObject:Object = new Object();
listenerObject.ready = function(eventObject:Object):Void {
// ここにイベント処理コードを挿入する
};
my_FLVplybk.addEventListener("ready", listenerObject);

とあります
FLVのロード処理が終わったよ〜 と教えてくれるのだから、便利です

しかし!

このイベントはWindowsのIEやFirefoxなど、複数の環境で上手く動作しないことがあります
Playerのバージョン、書き出しバージョンなど、原因の特定は出来ていませんが

・ブラウザのキャッシュに悪影響される?
・実際にはロードが完了していないのにイベントが発生する場合がある?
ようです


というわけで、readyを使わずに同様の処理を自前で作ってみましょう
FLVPlayback.progress こっちのイベントは信用できそうです

var listenerObject:Object = new Object();
listenerObject.progress = function(eventObject:Object):Void{
if(eventObject.target.bytesTotal != 0 && eventObject.target.bytesTotal <= eventObject.target.bytesLoaded){
// ここにイベント処理コードを挿入する
eventObject.target.play();
};
my_FLVPlybk.addEventListener("progress", listenerObject);

このように書くことで回避可能です。

ActionScript3.0用では直っていると思いますが、未検証です


ちなみにココ
if(eventObject.target.bytesTotal != 0
Flashではいろいろな場面で有効です。
非同期イベントなので、こういう処理が抜けると 大きなバグに繋がりやすいです

(kani君ありがとう)

Posted by uk at 20:38 | パーマリンク | コメント (0) | トラックバック (0)

このエントリーのトラックバックURL:
http://www.67.org/blog/mt-tb.cgi/881

コメントを投稿

MEMOUKROKUNANA

SITE FEED

  • 個人やグループでの貸し切り受講、企業や学校への出張講座、各種イベントへの講師派遣もご相談ください

    出張講座・貸し切り講座

Search