In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

FileLoader(multi0.2)

fileLoader2
クラス化してみた。うむむloadの処理は難しいなー
今後の課題
・複数ドメイン上のcrossdomain.xml対応
・gif,png,txt,swf,flvなどにも対応。
・bitmap,bitmapdataで戻せるように(最適な色深度対応)。
・エラーにちゃんと対応できるように。
Get Adobe Flash player
by umhr 29 Dec 2008
    Embed
/**
 * Copyright umhr ( http://wonderfl.net/user/umhr )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/wONe
 */

/*
fileLoader2
クラス化してみた。うむむloadの処理は難しいなー
今後の課題
・複数ドメイン上のcrossdomain.xml対応
・gif,png,txt,swf,flvなどにも対応。
・bitmap,bitmapdataで戻せるように(最適な色深度対応)。
・エラーにちゃんと対応できるように。

*/
package {
	import flash.display.Sprite;

	public class fileLoader2 extends Sprite{
		private var loadFiles_array:Array;
		private var data_xml:XML;
		private var MultiLoader:MultiLoaderClass = new MultiLoaderClass("http://mztm.heteml.jp/crossdomain.xml");
		public function fileLoader2(){
			loadFiles_array = MultiLoader.setLoad(["http://mztm.heteml.jp/umhr/3d/arss/data.xml"],onXMLComp);
		}
		private function onXMLComp():void{
			var jpg_array:Array = new Array();
			data_xml = XML(loadFiles_array[0].data);
			var _length:int = data_xml.items.item.length();
			for (var i:int = 0; i < _length; i++) {
				if(data_xml.items.item[i].jpg != ""){                      
					var _array:Array = String(data_xml.items.item[i].jpg).split('/');  
					var jpg_url:String = "http://mztm.heteml.jp/umhr/3d/arss/revolution/"+_array.pop();  
					jpg_url = jpg_url.replace(/%/g,'');
					jpg_array.push(jpg_url);  
					//jpg_array.push(data_xml.items.item[i].jpg);
				}
			}
			loadFiles_array = new Array();
			loadFiles_array = MultiLoader.setLoad(jpg_array,onImgComp);
		}
		private function onImgComp():void{
			var _length:int = loadFiles_array.length;
			for (var i:int = 0; i < _length; i++) {
				loadFiles_array[i].x = (i%12)*(150*0.26);
				loadFiles_array[i].y = int(i/12)*(150*0.26);
				loadFiles_array[i].scaleX = loadFiles_array[i].scaleY = 0.26;
				
				addChild(loadFiles_array[i]);
			}
		}
	}
}

class MultiLoaderClass{
	import flash.system.Security;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.display.Loader;
	//import flash.display.LoaderInfo;
	
	private var onComplete:Function = function():void{};
	private var loadNum:int;
	private var loadCompNum:int;
	
	public function MultiLoaderClass(_str:String = null){
		if(_str != null){
			Security.loadPolicyFile(_str);
		}
	}
	
	public function setLoad(__item_array:Array,_onComp:Function = null):Array{
		loadCompNum = loadNum = 0;
		onComplete = _onComp;
		var _array:Array = new Array();
		var _length:int = __item_array.length;
		for (var i:int = 0; i < _length; i++) {
			if(__item_array[i] == null){continue};
			var _extension:String = __item_array[i].substr(-4,4).toLowerCase();//拡張子を取り出す。
			if(_extension == ".xml"){
				loadNum ++;
				_array[i] = fnURLLoader(__item_array[i]);
			}else if(_extension == ".jpg"){
				loadNum ++;
				_array[i] = fnLoader(__item_array[i]);
			}else{
				//_array[i] = null;
			}
		}
		return _array;
	}
	private function fnURLLoader(__url:String):URLLoader{
		var _loader : URLLoader = new URLLoader();
		_loader.load(new URLRequest(__url));
		_loader.addEventListener (Event.COMPLETE,completeHandler);
		_loader.addEventListener (IOErrorEvent.IO_ERROR, ioErrorHandler);
		return _loader;			
	}
	
	private function fnLoader(__url:String):Loader{
		var _loader:Loader = new Loader();
		_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
		_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
		_loader.load(new URLRequest(__url));
		//_loader.name = __url;
		return _loader;
	}
	
	private function completeHandler(event:Event = null):void {
		loadCompNum ++;
		if(loadCompNum == loadNum){
			onComplete();
		}
		
		//var loaderInfo:LoaderInfo=event.currentTarget as LoaderInfo;
		//var loader:Loader=loaderInfo.loader;
		//addChild(loader);
		
	}
	
	private function ioErrorHandler(event:IOErrorEvent):void {
		//event.text = "Error #2035: URL が見つかりません。 URL: file:///~~~~~";
		//event.text = "Error #2036: 読み込みが未完了です。 URL: http://~~~~~";
		//から、URLのみを取り出す。
		//trace(String(event.text).substr(String(event.text).indexOf(" URL: ")+6),"*****");
		completeHandler();
	}
}