仕事でFLASH制作の依頼を受け、flv読み込みのをしたけど、
光回線やADSLだと問題ないけど、イーモバ等の低速回線だと
やっぱりムービーの読み込みに時間がかかる・・・
で、外部flvのローディングを作ったので、メモ書き。
ついでに、読み込みが終わった後に、次のフレームに移動も。
ライブラリのプロパティから「新規ビデオ」を選択。
↓
ステージにビデオシンボルを設置、サイズを調整し、インスタンス名を「MyFlv」とする。
↓
ローディング用のムービークリップを作成し、ステージに設置。インスタンス名を「Loading」とする。
↓
フレームを4フレームにし、1フレームと3フレームと4フレームにアクションスクリプトを設定。
ムービーとローディングは1~3フレームまで配置する。
ムービー再生後に表示するものを4フレーム目に設置。
↓
■■1フレーム目■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//ローカル接続を確立
connect_obj = new NetConnection();
connect_obj.connect( null );
//ストリーミングの準備
stream_obj = new NetStream( connect_obj );
MyFlv.attachVideo( stream_obj );
//ストリーミングの状況を監視
stream_obj.onStatus = function( info:Object )
{
switch( info.code )
{
//読み込みが完了するまでは再生しない
case ‘NetStream.Play.Start’:
if( _root.per < 100 )
{
stream_obj.pause( true );
}
break;
//再生が終了した時:オーディオ用のダミーMCを削除
case ‘NetStream.Play.Stop’:
removeMovieClip( _root.flv_audio );
break;
default:
break;
}
};
//動画の読み込み
stream_obj.setBufferTime( 5 );
//動画の保存先のURL
stream_obj.play( “ムービー.flv” );
//最初は非表示にしておく
MyFlv._visible = false;
//オーディオ制御用のオブジェクトを作成
_root.createEmptyMovieClip( “flv_audio” , 0 );
flv_audio.attachAudio( stream_obj );
flv_snd = new Sound( flv_audio );
//音を出さないようにしておく
flv_snd.setVolume( 0 );
//読み込み完了率を保持
loaded = 0;
total = 0;
per = 0;
■■3フレーム目■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//読み込み完了率を算出
if( stream_obj.bytesLoaded != 0 )
{
loaded = stream_obj.bytesLoaded;
total = stream_obj.bytesTotal;
per = Math.floor( loaded / total * 100 );
}
//読み込み完了を待つ
if( per < 100 )
{
//ローディングバーの設定
// Loading._xscale = per;
gotoAndPlay( _currentframe – 1 );
}
else
{
//画面を表示し、消音を解除
MyFlv._visible = true;
flv_snd.setVolume( 100 );
//先頭に巻き戻して再生
stream_obj.seek( 0 );
stream_obj.pause( false );
//動画の再生が終了したときのアクション(フレームの移動)
stream_obj.onStatus=function(infoObj){
if(infoObj.code==”NetStream.Play.Stop”){
gotoAndPlay(4);
}
}
//プログレスバーを消す
Loading._visible = false;
stop();
}
■■4フレーム目■■■■■■■■■■■■■■■■■■■■■■■■■■■■
stop();
以上。
何をしてるかって言うと、
ムービーを読み込み、一時停止し、読み込み中はローディングムービーを表示し、
全て読み込んだら先頭に戻って再生。
再生がすべて終わったら、次のフレーム(4フレーム目)に移動。
って感じ。
ローディングの出し方は、色々あると思うので、ご自由に。
今回のスクリプトは、OKWaveの下記の記事を参考にしました。(ってかそのまま)
http://okwave.jp/qa/q2088706.html