2-21 メモ用サンプルコード

by albatrus_jp
♥0 | Line 69 | Modified 2010-02-21 22:22:38 | MIT License
play

ActionScript3 source code

/**
 * Copyright albatrus_jp ( http://wonderfl.net/user/albatrus_jp )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/9Z3B
 */

package
{
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;   
	
	public class newLoader extends Sprite{
		
		//サムネイルとは、多数の画像を一覧表示するために縮小された画像。
		
		//サムネイルの並べる数
		var _thumNum:uint;
		//サムネイルの間隔
		var _thumInterval:uint;
		//XMLから読み込んだデータを入れる配列  
		//var img_list:Array = new Array(); 
		//var thum_list:Array = new Array();
		 //XMLから読み込んだデータを入れる配列
        var img_list:Array = new Array();
		var thum_list:Array = new Array();
		
		var _urlLoader:URLLoader;
		
		
		
		var thum:Array = new Array(); //サムネイルが入る配列 
		var thumContainer:Sprite = new Sprite(); //全部のサムネイルを入れるコンテナ
		
		var imgContainer:Sprite = new Sprite(); //大きい画像を入れるコンテナ 
		
		var currentNum:int = -1;  //現在選択されている画像番号  
		
		public function newLoader() {
			/*
			_thumNum = 3;
			_thumInterVal = 10;
			imgContainer.x = 200;
			*/
			_thumNum = 3;
			_thumInterval = 5;
			imgContainer.x = 100;
			
			_urlLoader = new URLLoader(new URLRequest("test.xml"));
			_urlLoader.addEventListener(Event.COMPLETE,onLoaded);
			this.addChild(thumContainer);
			this.addChild(imgContainer);
		}
		
		//読み込みが完了した際のonLoadedの処理を記載
		function onLoaded(event:Event):void{
			
			var xml:XML = new XML(_urlLoader.data);
			//配列の中に取り出したsrc,thumを入れている
			for each(var xmlObj:Object in xml.img){
			      img_list.push (xmlObj.@src);
			      thum_list.push(xmlObj.@thum);
			}
			
			for(var i:uint = 0; i< img_list.length;i++){
				
				//サムネイルの中にSpriteオブジェクトを作成します。スプライトは、表示するイメージと表示する位置をもつオブジェクトです。
				thum.push(new Sprite());
				var thumLoader:Loader = new Loader();
				//先ほどxmlから取り出したthumの画像ファイルを順番に呼び出す。(img_list.lenghtまで)
				thumLoader.load(new URLRequest(thum_list[i]));
				//取り出した画像を画面上に表示させている。
				thum[i].addChild(thumLoader);
				//取り出した順に名前を付ける
				thum[i].name = String(i);
				
				thumLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onthumImgLoadComp);
			}
			
		//サムネイルのロードが完了したら行う処理。
		function onthumImgLoadComp(event:Event):void{
			
			var imgNum:int = int(event.target.loader.parent.name);
			event.target.loader.scaleX = event.target.loader.scaleY = 0.7;

			event.target.loader.y = event.target.height *(int(imgNum / _thumNum) )+ _thumInterval;
			event.target.loader.x = event.target.width *(imgNum % _thumNum)+ _thumInterval;

			thumContainer.addChild(event.target.loader);
			
			event.target.loader.name = imgNum;
			event.target.loader.addEventListener(MouseEvent.CLICK,onClick);
		}
		
		function onClick(event:MouseEvent):void{
			
			var num:uint = event.target.name;
			
			if(num != currentNum){
				
				var imgLoader:Loader = new Loader();
				//クリックされた画像のimgをロードする。
				imgLoader.load(new URLRequest(img_list[num]));
				imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,imgloadComp);
				//クリックされた画像の数字を現在の表示している画像の数字にする。
				currentNum = num;
			}
		}
		
		function imgloadComp(event:Event):void{
			
			//大きいコンテナにオブジェクトが一つでもあれば、その画像を削除する。
			while(imgContainer.numChildren > 0){
				//クリックするごとに画像がかわるので、削除する画像を直接指定するのではなくインデックスをしていしている。
				imgContainer.removeChildAt(0);
			}
			
			imgContainer.addChild(event.target.loader);
		}
		}
	}
}