トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     外部FLVを読み込む前にNowLoading 00%と表示させたい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
moriyu
Åê¹ÆNo.43704
投稿日時: 2009-10-14 22:23
新米
居住地: 東京
投稿: 4
使用環境:
WinXP,Flash CS4
外部FLVを読み込む前にNowLoading 00%と表示させたい
いつも参考にさせていただいておりますが
投稿は初めてします。

外部のFLVを読み込み時に、NowLoading 00%と読み込み状況を
表示させ、読み込みが100%に達したときにFLVが再生されるように
したいと思っております。
FLVPlaybackは使用していません。

参考書籍や、WEBサイトも探しておりましたが
SWFのLoadingはあるのですが、FLVになると
合うような答えが見つかりませんでした。

すみませんが、ActionScriptを何番目のフレームに
どのようActionScriptを書けばよいのか
お教え願えませんでしょうか?


どうぞよろしくお願いいたします。

環境はWindows XP,Flash CS4、AcrionScript2.0です。
永井勝則
Åê¹ÆNo.43728
投稿日時: 2009-10-16 9:23
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: 外部FLVを読み込む前にNowLoading 00%と表示させたい
Flashのヘルプ(ActionScript 2.0 リファレンスガイド > ActionScript クラス > NetStream > bytesLoaded)に
出ているサンプルコードを使えば可能なのではないでしょうか。

bytesLoadedはNetStream.play()を呼び出さないと稼動しないので、
一度play()を呼び出し、直後にNetStream.pause()で再生を停め、
ロードしたバイトが100%になった時点で再度pause()を呼び出せばよいのではないでしょうか?


----------------
永井勝則:
himco.jp :

moriyu
Åê¹ÆNo.43732
投稿日時: 2009-10-16 17:33
新米
居住地: 東京
投稿: 4
使用環境:
WinXP,Flash CS4
Re: 外部FLVを読み込む前にNowLoading 00%と表示させたい
永井様

お返事ありがとうございます!
なるほど、NetStream byesLoadedをキーワードに探せばよかったのですね。
お教えいただいたFlashのヘルプのActionScript 2.0 リファレンスガイド の該当ページ見つけました。

下記の部分をヒントに色々調べたのですが
実際どのように書けばよいのか、わかりません。
すみませんが、もう少しお教え願えるでしょうか?

引用:

bytesLoadedはNetStream.play()を呼び出さないと稼動しないので、
一度play()を呼び出し、直後にNetStream.pause()で再生を停め、
ロードしたバイトが100%になった時点で再度pause()を呼び出せばよいのではないでしょうか?

永井勝則
Åê¹ÆNo.43733
投稿日時: 2009-10-16 22:10
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: 外部FLVを読み込む前にNowLoading 00%と表示させたい
現状ではどのようにやられていますか?
具体的に示されると、回答がつきやすくなります。


----------------
永井勝則:
himco.jp :

moriyu
Åê¹ÆNo.43734
投稿日時: 2009-10-16 23:12
新米
居住地: 東京
投稿: 4
使用環境:
WinXP,Flash CS4
Re: 外部FLVを読み込む前にNowLoading 00%と表示させたい
お世話になります。
現状ですが、お恥ずかしながら教えていただいたのを
貼り付け(下記)、インスタンス名を変えただけです。

外部のflvを読みきったところで
初めてプログレスバーと、トータルのバイト数が表示されます。
読み込むまでは何も表示されない状態です。

こんな現状です。

引用:

var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
xxx_mov.attachVideo(stream_ns);
stream_ns.play("XXXXX.flv");

this.createTextField("loaded_txt", this.getNextHighestDepth(), 10, 10, 160, 22);
this.createEmptyMovieClip("progressBar_mc", this.getNextHighestDepth());
progressBar_mc.createEmptyMovieClip("bar_mc", progressBar_mc.getNextHighestDepth());
with (progressBar_mc.bar_mc) {
beginFill(0xFF0000);
moveTo(0, 0);
lineTo(100, 0);
lineTo(100, 10);
lineTo(0, 10);
lineTo(0, 0);
endFill();
_xscale = 0;
}
progressBar_mc.createEmptyMovieClip("stroke_mc", progressBar_mc.getNextHighestDepth());
with (progressBar_mc.stroke_mc) {
lineStyle(0, 0x000000);
moveTo(0, 0);
lineTo(100, 0);
lineTo(100, 10);
lineTo(0, 10);
lineTo(0, 0);
}

var loaded_interval:Number = setInterval(checkBytesLoaded, 500, stream_ns);
function checkBytesLoaded(my_ns:NetStream) {
var pctLoaded:Number = Math.round(my_ns.bytesLoaded/my_ns.bytesTotal*100);
loaded_txt.text = Math.round(my_ns.bytesLoaded/1000)+" of "+Math.round(my_ns.bytesTotal/1000)+" KB loaded ("+pctLoaded+"%)";
progressBar_mc.bar_mc._xscale = pctLoaded;
if (pctLoaded>=100) {
clearInterval(loaded_interval);
}
}
永井勝則
Åê¹ÆNo.43735
投稿日時: 2009-10-17 10:05
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: 外部FLVを読み込む前にNowLoading 00%と表示させたい
確認ですが、Videoインスタンスをステージに置き、"xxx_mov"というインスタンス名をつけていますよね?

このActionScriptコードは何をやっているかというと、

1)FLVビデオの再生
2)テキストフィールド(loaded_txt)の作成
3)ムービークリップ(progressBar_mc)の作成
4)0.5秒おきに関数を呼び出すインターバルの設定
5)そのインターバルに呼び出される関数の定義

この中で、提示されている質問に対し3)は不要で、
loaded_txtもコードから作成する必要もないので、
あらかじめステージに配置しておくと(loaded_txtというインスタンス名をつけたダイナミックテキストフィールドとして)、
コードは次のように短くなります。


// 1)
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
xxx_mov.attachVideo(stream_ns);
stream_ns.play("videoName.flv")

// 4)
var loaded_interval:Number = setInterval(checkBytesLoaded, 500, stream_ns);

// 5)
function checkBytesLoaded(my_ns:NetStream) {
	var pctLoaded:Number = Math.round(my_ns.bytesLoaded/my_ns.bytesTotal*100);
	loaded_txt.text = Math.round(my_ns.bytesLoaded/1000)+" of "+Math.round(my_ns.bytesTotal/1000)+" KB loaded ("+pctLoaded+"%)";	
	if (pctLoaded>=100) {
		clearInterval(loaded_interval);
	}
}


この場合、ビデオはVideoインスタンスにxxx_movというインスタンス名をつけ、SWFと同じフォルダ内にvideoName.flvが存在する限り、再生されます。

もし再生されないのであれば、1)及びVideoや.flvの設定を修正する必要があります。

4)はsetInterval()というActionScriptのグローバル関数を使って500ミリ秒おきにcheckBytesLoadedという名前の関数を呼び出すインターバルを作成しています。

5)は提示の質問に対する回答の重要な部分で、
ここでは引数として送られてくるNetStreamのstream_nsの情報(プロパティ)を使ってダウンロードした割合を調べ、それをloaded_txtに表示しています。
if文ではその割合が100%を超えたらcheckBytesLoaded関数への呼び出しを止めています(インターバルをクリア)。

で、NetStream.play()で再生が開始されたビデオの再生を一時停止するにはNetStream.pause()を使います。
play()で一旦再生を開始しビデオのダウンロードを始めておいて、pause()で一時停止します。
これは”FLVをダウンロードしてから再生を開始したい”という質問の要望に応えるための処置です(通常はできるだけ再生を始めた方がユーザーには好ましいですが)。
pause()はplay()の直後に呼び出します。
これでビデオの再生は一時停止します。

FLVのダウンロードが終わったかどうかはcheckBytesLoaded()で調べています。
100%ダウンロードされたらそのインターバルをクリアするとともに再度pause()を呼び出します。
するとビデオの再生が再開されます。

なお.flvのダウンロードはローカルではあっという間に終わってしまうので、
できるだけファイルサイズの大きな.flvをインターネット上に置いてそれを再生するようにしないと、
期待されている"00%"は表示されません。


----------------
永井勝則:
himco.jp :

moriyu
Åê¹ÆNo.43737
投稿日時: 2009-10-17 11:58
新米
居住地: 東京
投稿: 4
使用環境:
WinXP,Flash CS4
Re: 外部FLVを読み込む前にNowLoading 00%と表示させたい
で、できました!!
3日間ずっと悩んでおりましたが、解決しました!!
解説までしていただき、親切にありがとうございます。
素晴らしいです!

ご確認のVideoインスタンスのインスタンス名は、
ご指摘の"xxx_mov"です。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops