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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     複数の外部画像の読込み状況の把握について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nosta
Åê¹ÆNo.36610
投稿日時: 2007-12-3 14:31
新米
居住地:
投稿: 1
使用環境:
WinXP,Flash8
複数の外部画像の読込み状況の把握について
はじめまして。
少し悩んでおりますので、お答えいただければ幸いです。

外部にある5つの画像ファイルを読み込む際の
プログレスバーを作成しようと思っています。

このプログレスバーは、5つの画像全体の読込み状態を
パーセントで表現したいと考えています。
そのため、5つの画像のトータルの読込み済みバイト数/総バイト数を把握しようと思っています。

5つの画像を読み込むことから、
以下のようにfor文を使い、画像(menuImage配列の中で定義)の読込みと、
onLoadProgressで読込み済バイト数/総バイト数のチェックを行っています。

for(var i=0;i<5;i++){
 //ムービークリップローダーを生成
 var MCLoader:MovieClipLoader = new MovieClipLoader();
 //格納用ムービークリップの生成
 var mc_image:MovieClip = contents.createEmptyMovieClip("mc_image"+i, i);
 //リスナーオブジェクトを生成
 var listenerObject:Object = new Object();
 //onLoadProgressイベントハンドラメソッドを定義
 listenerObject.onLoadProgress = function(MC, Load, Total) {};
 //リスナーオブジェクトを登録
 MCLoader.addListener(listenerObject);
 //画像の読込
 MCLoader.loadClip(menuImage[i],mc_image);
}

こうするとそれぞれの画像の読込み状態が把握できるため、
単純にonLoadProgressで出力できる数値を足して、
トータルの読込み状態を把握すればいいはずなのですが、
その計算式をうまく導き出すことができません。

例えば、LoagingByte、TotalByteというグローバル変数を設定し、
onLoadProgressを実行するたびにこの変数に足していっても、
当然のことながら、数値がどんどん上乗せされていくだけで、
トータルの数値を導き出すことができません。

for文の中で実行するという考え方自体が間違いなのかもしれませんが、
全体的なソースコードの組み方も含めて、
誤っているところなどをアドバイスいただけると大変助かります。

どうぞよろしくお願いいたします。
あにぃ
Åê¹ÆNo.36611
投稿日時: 2007-12-3 20:17
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: 複数の外部画像の読込み状況の把握について
いま、頭が固くなっておりまして、なにも思いつきません。
ベタベタですが、


//ロード数
var concnt:Number = 5;
//それぞれのロード済バイト数格納用
var loadbyte_ary:Array = new Array();
//それぞれのトータルバイト数格納用
var totalbyte_ary:Array = new Array();
//ロード済バイト数合計値格納用
var loadbyte:Number = 0;
//トータルバイト数合計値格納用
var totalbyte:Number = 0;
//ムービークリップローダーを生成
var MCLoader:MovieClipLoader = new MovieClipLoader();
//リスナーオブジェクトを生成
var listenerObject:Object = new Object();
//配列の初期化
for (var i = 0; i < concnt; i++) {
	loadbyte_ary[i] = 0;
	totalbyte_ary[i] = 0;
}
for (var i = 0; i < concnt; i++) {
	//格納用ムービークリップの生成
	var mc_image:MovieClip = _root.createEmptyMovieClip("mc_image" + i, i);
	mc_image.mcno = i;
	//onLoadProgressイベントハンドラメソッドを定義
	listenerObject.onLoadProgress = function(_mc:MovieClip, _loaded:Number, _total:Number) {
		//MCナンバーを取得
		no = _mc._name.split("mc_image").pop();
		//現在のナンバーの状況を配列に保存
		loadbyte_ary[no] = _loaded;
		totalbyte_ary[no] = _total;
		//合計値再計算
		loadbyte = 0;
		totalbyte = 0;
		for (var j = 0; j < concnt; j++) {
			loadbyte += loadbyte_ary[j];
			totalbyte += totalbyte_ary[j];
		}
		//デバッグ用
		trace(loadbyte);
		trace(totalbyte);
	};
	//リスナーオブジェクトを登録
	MCLoader.addListener(listenerObject);
	//画像の読込
	MCLoader.loadClip(menuImage[i], mc_image);
}

等でいかがでしょうか?
loadbyteとtotalbyteに現在の合計値が入っております。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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