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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     プログレスローダーの読込状況の表示について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
miyaryu
Åê¹ÆNo.42972
投稿日時: 2009-7-21 14:34
常連
居住地:
投稿: 79
使用環境:
windowsXP,flash CS4
プログレスローダーの読込状況の表示について
下記コードのようにLoaderクラスを使い、画像パス(path)をもとにローディング作業を行っています。これにプログレスバーを追加しようと考えており、プログレスバー用のカスタムクラスを作成しました。ローディング作業自体はProgressLoaderクラスにて実行し、ロード状況をProgressLoaderImageクラスに渡しているという状況です。
しかし、ローディング自体はうまくいって読み込まれるものの、肝心なプリローダーが表示されません。
表示リストaddChildへの追加については、ProgressLoaderクラスのコンストラクタ内で行っているのですが、表示されてないもようです。
表示リストへの追加が悪いと重い、numChildrenにて追加状況をデバッグしてみると、追加自体はうまくいっているようです。(1個カウントされます。)
何か注意すべき点を見落としているのでしょうか?

package{
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;

public class ProgressLoader extends MovieClip {
public static const LOAD_COMPLETE:String = "load_complete";
private var _loader:Loader;
private var _loaderInfo:LoaderInfo;
private var _bytesLoaded:Number = 0;
private var _bytesTotal:Number = 0;
private var progressBar:ProgressLoaderImage;

// コンストラクタ:
public function ProgressLoader (path:String) {
_loader = new Loader ;

//ローダーイベント
_loaderInfo = _loader.contentLoaderInfo;
_loaderInfo.addEventListener (ProgressEvent.PROGRESS,onProgress,false,0,true);
_loaderInfo.addEventListener (Event.COMPLETE,onComplete,false,0,true);

//プログレスローダーイメージ表示
progressBar = new ProgressLoaderImage();
addChild (progressBar);

//同期型エラー処理
try {
_loader.load (new URLRequest(path));
} catch (err:Error) {
trace ("ドキュメントをロードできません:\n"+err.message);
}
}

//プログレスローダー
private function onProgress (e:ProgressEvent):void {
var _loadPercent:int = Math.round(e.bytesLoaded / e.bytesTotal * 100);
_bytesLoaded = e.bytesLoaded;
_bytesTotal = e.bytesTotal;

progressBar.onProgressTo (_loadPercent,_bytesLoaded,_bytesTotal);
}

//ロード完了
private function onComplete (e:Event):void {
_loaderInfo.removeEventListener (ProgressEvent.PROGRESS,onProgress);
_loaderInfo.removeEventListener (Event.COMPLETE,onComplete);
_loaderInfo = null;

removeChild (progressBar);
progressBar = null;

dispatchEvent (new Event(LOAD_COMPLETE));
}

//ゲッターアセット(ロードデータをゲット)
public function get progressLoader ():Loader {
return _loader;
}

}
}
ひろゆき
Åê¹ÆNo.42973
投稿日時: 2009-7-21 15:18
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: プログレスローダーの読込状況の表示について
ProgressLoaderクラスのインスタンス自体がaddChildされていないとかでは?

あるいは、ProgressLoaderImageクラスのインスタンスを生成しても、
コンストラクタ内でvisible = false になっているとか。

いずれにせよ、これだけでは表示されないことはなさそうな感じですが。

また、スクリプトは、[code][/code]で囲んで読みやすいようにしておきましょう。

package{
	import flash.display.*;
	import flash.events.*;
	import flash.net.URLRequest;

	public class ProgressLoader extends MovieClip {
		public static const LOAD_COMPLETE:String = "load_complete";
		private var _loader:Loader;
		private var _loaderInfo:LoaderInfo;
		private var _bytesLoaded:Number = 0;
		private var _bytesTotal:Number = 0;
		private var progressBar:ProgressLoaderImage;

		public function ProgressLoader(path:String) {
			_loader = new Loader ;
			_loaderInfo = _loader.contentLoaderInfo;
			_loaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress,false,0,true);
			_loaderInfo.addEventListener(Event.COMPLETE,onComplete,false,0,true);
			progressBar = new ProgressLoaderImage();
			addChild(progressBar);
			try {
				_loader.load(new URLRequest(path));
			} catch(err:Error) {
				trace("ドキュメントをロードできません:\n"+err.message);
			}
		}

		private function onProgress(e:ProgressEvent):void {
			var _loadPercent:int = Math.round(e.bytesLoaded / e.bytesTotal * 100);
			_bytesLoaded = e.bytesLoaded;
			_bytesTotal = e.bytesTotal;
			progressBar.onProgressTo(_loadPercent,_bytesLoaded,_bytesTotal);
		}
		private function onComplete(e:Event):void {
			_loaderInfo.removeEventListener(ProgressEvent.PROGRESS,onProgress);
			_loaderInfo.removeEventListener(Event.COMPLETE,onComplete);
			_loaderInfo = null;
			removeChild(progressBar);
			progressBar = null;
			dispatchEvent(new Event(LOAD_COMPLETE));
		}
		public function get progressLoader():Loader {
			return _loader;
		}

	}
}


----------------
質問する際は、回答者に具体的な情報を与えてください。

miyaryu
Åê¹ÆNo.42976
投稿日時: 2009-7-21 17:04
常連
居住地:
投稿: 79
使用環境:
windowsXP,flash CS4
Re: プログレスローダーの読込状況の表示について
ひろゆき様、早速の御回答ありがとうございます。
誠に恥ずかしいことなのですが、ProgressLoaderクラスのインスタンス自体を表示リストに追加しておりませんでした。
単純なミスで申し訳ないです。
以後、見直しの徹底を図りたいと思います。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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