Progressionのリソースキャッシュと、複数ファイル読み込みの組み合わせが
便利すぎて思わず漏らしてしまいそうです(チョロリ)。あっ。
外部画像を読み込んで一覧表示させるものを作ってまして、
各サムネイル内で読み込むようにしてたんですが、
最初にまとめて読むように変更しました。
というのも、リソースキャッシュのおかげで
画像の流用がすごく簡単に行えるようになったからです。
リソースキャッシュについては以前かいたこの日記を参照。
複数ファイルの読み込みにはProgressionがLoaderListというクラスを用意しています。
// 読み込む画像一覧
var list:Array = [
{id:"img_a", url:a.jpg"},
{id:"img_b", url:b.jpg"},
{id:"img_c", url:c.jpg"},
];
// 複数ファイル読み込み管理
var loadList:LoaderList = new LoaderList();
// 読み込み開始
loadList.onStart = function():void {
trace( "まとめて読んじゃうわよ!" );
}
// 読み込み中
loadList.onProgress = function():void {
trace( this.percent,"%" );
}
// 読み込み完了
loadList.onComplete = function():void{
trace( "終わったわよ!" );
};
// まとめて読み込み指定
for ( var i:int = 0; i < list.length; i++ ) {
loadList.addCommand(
new LoadBitmapData( new URLRequest(list[i].url), {
cacheAsResource:true, context:new LoaderContext(true),
resGroup:"images", resId:list[i].id
} )
);
}
// 読み込み開始
loadList.execute();
こんな感じにまとめて読み込みます。
読み込みにはLoadBitmapData、LoadSound、LoadSWF、LoadURLなどが使えます。
普通は画像一覧を作る場合、
個々のローダークラスに完了後の処理を書きます。
var bmpLoad1:LoadBitmapData( new URLRequest("a.jpg") );
bmpLoad1.addEventListener( LoadBitmapData.ExecuteEvent, onComplete );
var loadList:LoaderList = new LoaderList();
loadList.addCommand( bmpLoad1 );
しかしリソースキャッシュ機構を組み合わせることで、
個々の終了後の処理は不要になります。
resIdパラメータを指定すれば後からその名前で呼び出せるからです。
loadList.addCommand(
new LoadBitmapData( new URLRequest(list[i].url), {
cacheAsResource:true, context:new LoaderContext(true),
resGroup:"images", resId:list[i].id
} )
);
var bmp:Bitmap = new Bitmap( getResourceById("img_a").data );
複数ファイルのロード管理はCASA Libでも同様のものがありますが、
ProgressionのLoaderListを使う利点はリソースキャッシュにあると思います。
LoaderListに要望を出すとしたら並列読み込みのサポートでしょうか。
順次読み込みのほうが回線を圧迫せずにすみますが、
大量にファイルがある場合にやっぱり遅いんですよね。
並列指定も出来ると嬉しいなと。
突然カップヌードルが食べたくなったので貼ってみる。意味はありません。
![]() |
カップヌードル 売り上げランキング : 71860 |
コメントはまだありません。