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);
			}
		}
		
	}
}

エラー画像が読み込めなかったときは・・・あきらめる?