CASAライブラリ(AS3)のGroupLoadでエラー画像を表示する。
いきなり再開。
AS3になってからXML操作なんかは標準でいい感じなので、
CASA使ってなかったんだけどちょっと使ってみたらGroupLoadはやっぱ便利だなあ。
画像をたくさん読み込んで表示させるときに、いくつか読み込めない画像があったら
エラー用の画像を表示するサンプル。
package { import flash.display.*; import flash.events.* //import flash.errors.*; import org.casalib.load.*; import org.casalib.events.*; /** * CasaLoaderSample * @author yoshidam */ public class CasaLoaderSample extends MovieClip { private var _imgURLs:Array = ["test1.jpg", "test2.jpg", "test3.jpg"]; private var _groupLoad:GroupLoad; private var _cnt:int = 0; public function CasaLoaderSample() { startLoadGroup(); } /** * グループロード開始 */ private function startLoadGroup():void { _cnt++; trace(_cnt + "回目のトライ"); _groupLoad = new GroupLoad(); _groupLoad.addEventListener(LoadEvent.COMPLETE, onCompleteGroupLoad); var len:int = _imgURLs.length; for (var i:int = 0; i < len; i++) { var imageLoad:ImageLoad = new ImageLoad(_imgURLs[i]); imageLoad.addEventListener(IOErrorEvent.IO_ERROR, onErrorImageLoad); _groupLoad.addLoad(imageLoad); } _groupLoad.start(); } /** * 画像ロードエラー * @param e */ private function onErrorImageLoad(e:IOErrorEvent):void { var imgs:Array = _groupLoad.completedLoads; //ロードが成功した画像 var len:int = imgs.length; for (var i = 0; i < len; i++) { if (!imgs[i].loaded) { //ロードが失敗した画像のかわりにエラー画像のURLを入れる。 _imgURLs[i] = "error.jpg"; } } //もう一度グループロードする startLoadGroup(); } /** * ロードグループ完了 * @param e */ private function onCompleteGroupLoad(e:LoadEvent):void { var len:int = _groupLoad.loads.length; for (var i:int = 0; i < len; i++) { var img:Bitmap = _groupLoad.loads[i].contentAsBitmap; //ビットマップにキャストする。 img.smoothing = true; img.width = 40; img.height = 40; img.x = (img.width * i) + (2 * i); addChild(img); } } } }
エラー画像が読み込めなかったときは・・・あきらめる?