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 |
No comments yet.