feat.USSY forked from: LivePaintwithSound

by HaraMakoto forked from LivePaintwithSound (diff: 9)
曲は夢幻のオルゴール工房さんにて配布されているmp3ファイルを使用しています
http://www.dream-orgel.net/diary.cgi?no=120&continue=on
♥0 | Line 467 | Modified 2010-07-07 09:25:10 | MIT License
play

ActionScript3 source code

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

package {
	import caurina.transitions.Equations;
	import caurina.transitions.Tweener;
	import caurina.transitions.properties.DisplayShortcuts;
	
	import com.adobe.serialization.json.JSON;
	import com.bit101.components.ColorChooser;
	import com.bit101.components.PushButton;
	
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.media.SoundLoaderContext;
	import flash.media.SoundMixer;
	import flash.media.SoundTransform;
	import flash.net.URLRequest;
	import flash.system.Security;
	import flash.utils.ByteArray;
	import flash.utils.getTimer;
	
        /**
        * 曲は夢幻のオルゴール工房さんにて配布されているmp3ファイルを使用しています
        * http://www.dream-orgel.net/diary.cgi?no=120&continue=on
        */
	[SWF(width="465", height="465", backgroundColor="#000000", frameRate=30)]
	public class LineReader extends Sprite
	{
		private var _field:Sprite = new Sprite();
		private var _paintField:Sprite = new Sprite();
		private var _uiField:Sprite = new Sprite();
		private var _stopUiField:Sprite = new Sprite();
		private var _startField:Sprite = new Sprite();
		
		//Clearエフェクト
		private var _clearEffBmp:Bitmap = new Bitmap();
		private var _clearBmd:BitmapData = new BitmapData(465,465,true,0);
		
		//座標リスト
		private var _pointListList:Array = new Array();
		private var _currentListIndex:int = 0;
		private var _actionFlg:Boolean = true;
		/**
		 * params
		 */
		private var _col:Number = 0xFFFFFF;
		/**
		 * Sound parts
		 */
		private var player:Object = new Object();
		private var loader:Loader = new Loader();
		private var bA:ByteArray;
		private var spectrum:Array;
		public static var lowVal:Number=0;
		public static var middleVal:Number=0;
		public static var highVal:Number = 0;
		private var sound:Sound;
		private var _ch:SoundChannel;
		
		/**
		 * UI
		 */
		private var _colSelector:ColorSelector;
		private var _colChooser:ColorChooser;
		
		/**
		 * RECORD
		 */ 
		private var _rec:DrawRecoder = new DrawRecoder();
		private var _player:DrawPlayer = new DrawPlayer();
		
		/**
		 * TIMER
		 */
		private var _startTime:int;
		
		public function LineReader()
		{
			init();
			setupDisplay();
		}
		
		public function init():void {
			DisplayShortcuts.init();
			Security.loadPolicyFile("http://swimmingbird.heteml.jp/crossdomain.xml");
			
			_field.graphics.clear();
			_field.graphics.beginFill(0xCCCCCC,0);
			_field.graphics.drawRect(0,0,465,465);
			_field.graphics.endFill();
			
			
			//UI Starting
			var _startButton:PushButton = new PushButton(_startField,20,20,"start", startHandler);
			//UI Playing
			//			var _actionBtn:PushButton = new PushButton(_uiField,20,20,"action",actionHandler);
			//			var _noActionBtn:PushButton = new PushButton(_uiField,20,45,"noAction",noActionHandler);
			var _clearBtn:PushButton = new PushButton(_uiField,20,20,"clear",clearHandler);
			var _plotBtn:PushButton = new PushButton(_uiField,20,45,"plot",plotHandler);
			var _stopBtn:PushButton = new PushButton(_uiField,20,120,"stop",stopHandler);
			//UI Stop
			var _playDataBtn:PushButton = new PushButton(_stopUiField,20,20,"play",playDataHandler);
			var _stopDrawBtn:PushButton = new PushButton(_stopUiField,20,45,"stop",stopDrawHandler);
			
			_colSelector = new ColorSelector();
			//			_colChooser = new ColorChooser(_uiField,20,145);
			
			//Effect Init
			_clearEffBmp.bitmapData = _clearBmd;
			_clearEffBmp.visible = false;
			_clearEffBmp.alpha = 0;
			//座標リスト
			var comListString:String = '[{"col":16777113,"id":0,"fx":331,"fy":210,"time":5307,"childlist":[{"time":5355,"x":330,"y":210},{"time":5373,"x":327,"y":210},{"time":5390,"x":325,"y":210},{"time":5408,"x":320,"y":210},{"time":5428,"x":318,"y":212},{"time":5445,"x":317,"y":212},{"time":5463,"x":316,"y":212},{"time":5480,"x":315,"y":212},{"time":5498,"x":314,"y":212},{"time":5515,"x":313,"y":212},{"time":5533,"x":312,"y":213},{"time":5584,"x":311,"y":213},{"time":5602,"x":310,"y":213},{"time":5620,"x":308,"y":213},{"time":5638,"x":303,"y":216},{"time":5655,"x":301,"y":217},{"time":5674,"x":296,"y":217},{"time":5692,"x":294,"y":217},{"time":5709,"x":292,"y":217},{"time":5728,"x":291,"y":217},{"time":5746,"x":290,"y":217},{"time":5764,"x":289,"y":217},{"time":5799,"x":288,"y":217},{"time":5817,"x":287,"y":217},{"time":5835,"x":286,"y":217},{"time":5853,"x":283,"y":218},{"time":5888,"x":282,"y":218},{"time":5906,"x":281,"y":218},{"time":5941,"x":280,"y":218},{"time":5977,"x":278,"y":218},{"time":5995,"x":278,"y":217},{"time":6047,"x":276,"y":217},{"time":6064,"x":275,"y":217},{"time":6081,"x":275,"y":215},{"time":6116,"x":273,"y":215},{"time":6133,"x":273,"y":214},{"time":6168,"x":271,"y":214},{"time":6185,"x":270,"y":213},{"time":6204,"x":270,"y":212},{"time":6221,"x":269,"y":212},{"time":6257,"x":268,"y":211},{"time":6275,"x":267,"y":211},{"time":6295,"x":267,"y":210},{"time":6312,"x":265,"y":210},{"time":6347,"x":264,"y":208},{"time":6381,"x":263,"y":208},{"time":6398,"x":263,"y":207},{"time":6451,"x":262,"y":206},{"time":6469,"x":261,"y":205},{"time":6503,"x":260,"y":204},{"time":6556,"x":260,"y":203},{"time":6573,"x":259,"y":202},{"time":6591,"x":259,"y":201},{"time":6629,"x":259,"y":200},{"time":6647,"x":259,"y":199},{"time":6682,"x":259,"y":198},{"time":6717,"x":258,"y":198},{"time":6734,"x":258,"y":195},{"time":6752,"x":258,"y":193},{"time":6770,"x":257,"y":191},{"time":6787,"x":257,"y":189},{"time":6804,"x":257,"y":188},{"time":6821,"x":257,"y":187},{"time":6838,"x":257,"y":185},{"time":6855,"x":257,"y":184},{"time":6873,"x":257,"y":181},{"time":6891,"x":257,"y":178},{"time":6909,"x":257,"y":176},{"time":6929,"x":257,"y":175},{"time":6947,"x":257,"y":174},{"time":6981,"x":257,"y":173},{"time":7015,"x":258,"y":171},{"time":7032,"x":258,"y":170},{"time":7050,"x":258,"y":169},{"time":7067,"x":258,"y":168},{"time":7084,"x":258,"y":167},{"time":7102,"x":260,"y":167},{"time":7138,"x":260,"y":166},{"time":7156,"x":260,"y":165},{"time":7174,"x":260,"y":163},{"time":7191,"x":262,"y":160},{"time":7209,"x":262,"y":159},{"time":7228,"x":263,"y":157},{"time":7246,"x":263,"y":156},{"time":7264,"x":264,"y":155},{"time":7282,"x":264,"y":153},{"time":7299,"x":265,"y":149},{"time":7334,"x":266,"y":147},{"time":7352,"x":268,"y":145},{"time":7370,"x":268,"y":144},{"time":7387,"x":269,"y":143},{"time":7405,"x":271,"y":141},{"time":7422,"x":271,"y":140},{"time":7477,"x":272,"y":139},{"time":7495,"x":273,"y":138},{"time":7530,"x":274,"y":138},{"time":7564,"x":275,"y":137},{"time":7582,"x":277,"y":135},{"time":7600,"x":279,"y":135},{"time":7617,"x":280,"y":134},{"time":7635,"x":282,"y":133},{"time":7652,"x":283,"y":132},{"time":7688,"x":285,"y":132},{"time":7723,"x":287,"y":131},{"time":7740,"x":287,"y":130},{"time":7758,"x":289,"y":130},{"time":7777,"x":290,"y":130},{"time":7795,"x":291,"y":129},{"time":7812,"x":293,"y":128},{"time":7829,"x":295,"y":127},{"time":7847,"x":298,"y":126},{"time":7882,"x":299,"y":125},{"time":7900,"x":300,"y":125},{"time":7918,"x":301,"y":124},{"time":7952,"x":302,"y":124},{"time":7971,"x":304,"y":124},{"time":7989,"x":307,"y":122},{"time":8006,"x":311,"y":120},{"time":8043,"x":312,"y":120},{"time":8062,"x":315,"y":119},{"time":8081,"x":318,"y":118},{"time":8099,"x":320,"y":117},{"time":8116,"x":321,"y":116},{"time":8133,"x":322,"y":116},{"time":8169,"x":323,"y":116},{"time":8187,"x":324,"y":116},{"time":8205,"x":324,"y":115},{"time":8223,"x":325,"y":115},{"time":8241,"x":326,"y":115},{"time":8259,"x":327,"y":115},{"time":8278,"x":328,"y":115},{"time":8296,"x":329,"y":115},{"time":8314,"x":330,"y":115},{"time":8332,"x":331,"y":115},{"time":8350,"x":333,"y":113},{"time":8368,"x":335,"y":113},{"time":8402,"x":336,"y":113},{"time":8420,"x":337,"y":113},{"time":8437,"x":339,"y":113},{"time":8455,"x":341,"y":113},{"time":8473,"x":343,"y":113},{"time":8491,"x":349,"y":113},{"time":8508,"x":352,"y":113},{"time":8525,"x":353,"y":113},{"time":8582,"x":355,"y":113},{"time":8600,"x":356,"y":113},{"time":8635,"x":357,"y":113},{"time":8670,"x":359,"y":113},{"time":8688,"x":360,"y":113},{"time":8723,"x":361,"y":113},{"time":8743,"x":363,"y":113},{"time":8781,"x":364,"y":113},{"time":8798,"x":365,"y":113},{"time":8816,"x":368,"y":113},{"time":8833,"x":372,"y":114},{"time":8850,"x":375,"y":114},{"time":8867,"x":377,"y":115},{"time":8885,"x":379,"y":115},{"time":8903,"x":380,"y":116},{"time":8921,"x":381,"y":116},{"time":8938,"x":382,"y":116},{"time":9009,"x":383,"y":116},{"time":9149,"x":384,"y":117},{"time":9184,"x":385,"y":117},{"time":9201,"x":385,"y":118},{"time":9236,"x":387,"y":119},{"time":9254,"x":388,"y":119},{"time":9272,"x":388,"y":120},{"time":9290,"x":390,"y":121},{"time":9307,"x":392,"y":122},{"time":9325,"x":393,"y":123},{"time":9344,"x":394,"y":123},{"time":9362,"x":395,"y":124},{"time":9380,"x":398,"y":127},{"time":9414,"x":400,"y":130},{"time":9449,"x":401,"y":130},{"time":9486,"x":402,"y":131},{"time":9504,"x":403,"y":132},{"time":9521,"x":403,"y":133},{"time":9540,"x":404,"y":133},{"time":9558,"x":404,"y":134},{"time":9577,"x":404,"y":135},{"time":9595,"x":405,"y":135},{"time":9614,"x":408,"y":137},{"time":9649,"x":411,"y":144},{"time":9666,"x":413,"y":148},{"time":9683,"x":414,"y":150},{"time":9701,"x":414,"y":151},{"time":9718,"x":415,"y":154},{"time":9735,"x":416,"y":155},{"time":9752,"x":416,"y":157},{"time":9770,"x":416,"y":158},{"time":9788,"x":417,"y":159},{"time":9805,"x":417,"y":161},{"time":9822,"x":418,"y":164},{"time":9839,"x":419,"y":166},{"time":9857,"x":419,"y":168},{"time":9876,"x":419,"y":169},{"time":9899,"x":419,"y":170},{"time":9916,"x":420,"y":174},{"time":9933,"x":420,"y":175},{"time":9968,"x":420,"y":176},{"time":10021,"x":420,"y":177},{"time":10038,"x":421,"y":177},{"time":10055,"x":421,"y":179},{"time":10091,"x":421,"y":180},{"time":10110,"x":422,"y":181},{"time":10128,"x":422,"y":182},{"time":10145,"x":422,"y":184},{"time":10163,"x":422,"y":185},{"time":10203,"x":422,"y":186},{"time":10238,"x":422,"y":187},{"time":10256,"x":422,"y":189},{"time":10291,"x":422,"y":191},{"time":10309,"x":422,"y":192},{"time":10328,"x":422,"y":193},{"time":10363,"x":423,"y":195},{"time":10381,"x":423,"y":196},{"time":10403,"x":423,"y":197},{"time":10420,"x":423,"y":198},{"time":10438,"x":423,"y":200},{"time":10455,"x":423,"y":201},{"time":10472,"x":423,"y":202},{"time":10490,"x":423,"y":203},{"time":10509,"x":423,"y":205},{"time":10530,"x":423,"y":206},{"time":10547,"x":423,"y":208},{"time":10564,"x":423,"y":209},{"time":10581,"x":422,"y":209},{"time":10603,"x":421,"y":211},{"time":10619,"x":419,"y":212},{"time":10653,"x":419,"y":214},{"time":10670,"x":418,"y":214},{"time":10703,"x":417,"y":216},{"time":10720,"x":416,"y":216},{"time":10738,"x":415,"y":217},{"time":10755,"x":414,"y":217},{"time":10791,"x":413,"y":220},{"time":10809,"x":408,"y":222},{"time":10827,"x":406,"y":223},{"time":10845,"x":405,"y":224},{"time":10863,"x":404,"y":225},{"time":10904,"x":402,"y":226},{"time":10922,"x":401,"y":226},{"time":10956,"x":398,"y":227},{"time":10974,"x":397,"y":227},{"time":11011,"x":394,"y":228},{"time":11028,"x":393,"y":228},{"time":11046,"x":392,"y":229},{"time":11064,"x":391,"y":229},{"time":11081,"x":390,"y":229},{"time":11106,"x":388,"y":229},{"time":11122,"x":384,"y":230},{"time":11154,"x":383,"y":230},{"time":11171,"x":383,"y":231},{"time":11189,"x":382,"y":231},{"time":11207,"x":379,"y":231},{"time":11228,"x":378,"y":231},{"time":11244,"x":376,"y":233},{"time":11279,"x":373,"y":233},{"time":11709,"x":341,"y":225},{"time":11710,"x":340,"y":225},{"time":11777,"x":339,"y":224},{"time":11854,"x":338,"y":223},{"time":11887,"x":338,"y":222},{"time":11918,"x":337,"y":221},{"time":11944,"x":335,"y":221},{"time":11968,"x":335,"y":220},{"time":12014,"x":334,"y":219},{"time":12051,"x":334,"y":218},{"time":12084,"x":332,"y":218},{"time":12100,"x":332,"y":217},{"time":12114,"x":331,"y":217},{"time":12142,"x":331,"y":216},{"time":12166,"x":330,"y":215},{"time":12177,"x":330,"y":214},{"time":12189,"x":329,"y":214},{"time":12214,"x":329,"y":213},{"time":12281,"x":328,"y":213},{"time":12318,"x":328,"y":212}],"type":"draw"},{"col":16777113,"id":0,"fx":307,"fy":183,"time":13545,"childlist":[{"time":13583,"x":306,"y":183},{"time":13652,"x":305,"y":183},{"time":13688,"x":304,"y":183},{"time":13742,"x":303,"y":183},{"time":13780,"x":303,"y":182},{"time":13797,"x":302,"y":182},{"time":13832,"x":302,"y":181},{"time":13849,"x":301,"y":181},{"time":13885,"x":301,"y":180},{"time":13902,"x":301,"y":178},{"time":13919,"x":301,"y":176},{"time":13936,"x":301,"y":174},{"time":13954,"x":301,"y":172},{"time":13972,"x":301,"y":171},{"time":13990,"x":301,"y":170},{"time":14009,"x":301,"y":169},{"time":14029,"x":301,"y":168},{"time":14063,"x":301,"y":167},{"time":14115,"x":301,"y":165},{"time":14133,"x":301,"y":164},{"time":14168,"x":301,"y":163},{"time":14186,"x":301,"y":162},{"time":14204,"x":302,"y":161},{"time":14221,"x":302,"y":159},{"time":14238,"x":302,"y":157},{"time":14255,"x":303,"y":156},{"time":14290,"x":304,"y":154},{"time":14310,"x":304,"y":153},{"time":14346,"x":304,"y":152},{"time":14364,"x":305,"y":152},{"time":14399,"x":305,"y":151},{"time":14416,"x":306,"y":149},{"time":14433,"x":307,"y":149},{"time":14456,"x":307,"y":148},{"time":14474,"x":308,"y":148},{"time":14495,"x":309,"y":146},{"time":14513,"x":309,"y":145},{"time":14547,"x":311,"y":145},{"time":14582,"x":312,"y":145},{"time":14600,"x":312,"y":143},{"time":14617,"x":313,"y":143},{"time":14652,"x":315,"y":143},{"time":14705,"x":316,"y":143},{"time":14775,"x":317,"y":143},{"time":14797,"x":318,"y":143},{"time":14831,"x":319,"y":143},{"time":14866,"x":321,"y":144},{"time":14884,"x":321,"y":145},{"time":14901,"x":322,"y":145},{"time":14936,"x":322,"y":147},{"time":14970,"x":323,"y":148},{"time":15005,"x":323,"y":149},{"time":15023,"x":323,"y":150},{"time":15043,"x":323,"y":152},{"time":15078,"x":323,"y":154},{"time":15096,"x":323,"y":155},{"time":15131,"x":323,"y":156},{"time":15165,"x":323,"y":157},{"time":15235,"x":323,"y":158},{"time":15286,"x":323,"y":159},{"time":15303,"x":323,"y":160},{"time":15320,"x":323,"y":161},{"time":15338,"x":323,"y":162},{"time":15373,"x":323,"y":163},{"time":15390,"x":323,"y":164},{"time":15410,"x":323,"y":165},{"time":15447,"x":323,"y":166},{"time":15465,"x":323,"y":167},{"time":15483,"x":323,"y":168},{"time":15518,"x":323,"y":169},{"time":15554,"x":323,"y":170},{"time":15588,"x":323,"y":171},{"time":15642,"x":323,"y":172},{"time":15679,"x":323,"y":173},{"time":15696,"x":322,"y":174},{"time":15731,"x":321,"y":175},{"time":15750,"x":321,"y":176},{"time":15768,"x":319,"y":176},{"time":15802,"x":318,"y":177},{"time":15867,"x":316,"y":179},{"time":15885,"x":313,"y":181},{"time":15917,"x":311,"y":182},{"time":15935,"x":311,"y":184},{"time":15971,"x":310,"y":184},{"time":16041,"x":309,"y":184},{"time":16061,"x":309,"y":185},{"time":16130,"x":308,"y":185},{"time":16216,"x":307,"y":185},{"time":16337,"x":306,"y":185}],"type":"draw"},{"col":16777113,"id":0,"fx":356,"fy":193,"time":17336,"childlist":[{"time":17446,"x":355,"y":193},{"time":17498,"x":354,"y":193},{"time":17586,"x":353,"y":193},{"time":17604,"x":353,"y":192},{"time":17658,"x":353,"y":191},{"time":17678,"x":352,"y":191},{"time":17714,"x":352,"y":190},{"time":17731,"x":352,"y":189},{"time":17767,"x":352,"y":188},{"time":17785,"x":351,"y":188},{"time":17803,"x":351,"y":186},{"time":17837,"x":351,"y":183},{"time":17862,"x":351,"y":182},{"time":17880,"x":351,"y":181},{"time":17900,"x":351,"y":180},{"time":17918,"x":351,"y":179},{"time":17970,"x":351,"y":177},{"time":18004,"x":351,"y":176},{"time":18022,"x":351,"y":173},{"time":18062,"x":351,"y":172},{"time":18097,"x":351,"y":171},{"time":18115,"x":351,"y":169},{"time":18133,"x":352,"y":168},{"time":18150,"x":352,"y":167},{"time":18167,"x":352,"y":166},{"time":18185,"x":353,"y":165},{"time":18219,"x":353,"y":164},{"time":18236,"x":353,"y":163},{"time":18255,"x":353,"y":162},{"time":18290,"x":353,"y":161},{"time":18309,"x":354,"y":161},{"time":18328,"x":354,"y":159},{"time":18364,"x":354,"y":158},{"time":18381,"x":355,"y":158},{"time":18416,"x":356,"y":156},{"time":18434,"x":357,"y":155},{"time":18452,"x":357,"y":154},{"time":18486,"x":358,"y":154},{"time":18504,"x":358,"y":153},{"time":18522,"x":359,"y":153},{"time":18539,"x":360,"y":152},{"time":18557,"x":361,"y":151},{"time":18613,"x":362,"y":151},{"time":18630,"x":363,"y":151},{"time":18668,"x":364,"y":151},{"time":18686,"x":365,"y":151},{"time":18720,"x":366,"y":151},{"time":18776,"x":367,"y":151},{"time":18813,"x":369,"y":151},{"time":18830,"x":370,"y":151},{"time":18868,"x":370,"y":152},{"time":18902,"x":371,"y":153},{"time":18936,"x":371,"y":154},{"time":18972,"x":371,"y":155},{"time":18989,"x":371,"y":156},{"time":19028,"x":371,"y":157},{"time":19045,"x":371,"y":158},{"time":19081,"x":371,"y":159},{"time":19115,"x":371,"y":160},{"time":19133,"x":371,"y":161},{"time":19151,"x":371,"y":163},{"time":19170,"x":371,"y":164},{"time":19187,"x":373,"y":165},{"time":19241,"x":373,"y":166},{"time":19263,"x":373,"y":167},{"time":19280,"x":373,"y":168},{"time":19312,"x":373,"y":169},{"time":19329,"x":373,"y":170},{"time":19346,"x":373,"y":171},{"time":19364,"x":373,"y":172},{"time":19381,"x":373,"y":173},{"time":19416,"x":373,"y":174},{"time":19434,"x":373,"y":175},{"time":19452,"x":373,"y":176},{"time":19469,"x":373,"y":177},{"time":19488,"x":373,"y":178},{"time":19505,"x":373,"y":179},{"time":19523,"x":373,"y":180},{"time":19579,"x":372,"y":182},{"time":19597,"x":371,"y":183},{"time":19614,"x":371,"y":184},{"time":19632,"x":370,"y":185},{"time":19668,"x":369,"y":186},{"time":19702,"x":368,"y":187},{"time":19736,"x":367,"y":188},{"time":19788,"x":367,"y":189},{"time":19805,"x":366,"y":189},{"time":19865,"x":366,"y":190},{"time":19935,"x":365,"y":190},{"time":19988,"x":364,"y":190},{"time":20006,"x":364,"y":192},{"time":20043,"x":363,"y":192},{"time":20079,"x":362,"y":192},{"time":20113,"x":362,"y":193},{"time":20183,"x":360,"y":193},{"time":20201,"x":359,"y":193},{"time":20271,"x":358,"y":193},{"time":20309,"x":357,"y":193},{"time":20380,"x":356,"y":193}],"type":"draw"},{"col":16777113,"id":0,"fx":264,"fy":215,"time":21848,"childlist":[{"time":21921,"x":263,"y":215},{"time":21940,"x":262,"y":215},{"time":21981,"x":261,"y":215},{"time":22014,"x":260,"y":214},{"time":22030,"x":259,"y":214},{"time":22064,"x":257,"y":214},{"time":22083,"x":256,"y":214},{"time":22100,"x":253,"y":213},{"time":22117,"x":252,"y":213},{"time":22135,"x":251,"y":213},{"time":22152,"x":250,"y":213},{"time":22187,"x":249,"y":213},{"time":22222,"x":248,"y":212},{"time":22242,"x":247,"y":212},{"time":22268,"x":246,"y":212},{"time":22304,"x":245,"y":212},{"time":22322,"x":244,"y":212},{"time":22341,"x":241,"y":212},{"time":22362,"x":240,"y":212},{"time":22397,"x":239,"y":212},{"time":22432,"x":237,"y":212},{"time":22468,"x":236,"y":212},{"time":22520,"x":235,"y":212},{"time":22590,"x":234,"y":212},{"time":22608,"x":233,"y":212},{"time":22628,"x":232,"y":212},{"time":22645,"x":230,"y":212},{"time":22664,"x":229,"y":212},{"time":22682,"x":229,"y":214},{"time":22699,"x":228,"y":214},{"time":22734,"x":227,"y":214},{"time":22769,"x":227,"y":215},{"time":22820,"x":225,"y":216},{"time":22875,"x":224,"y":216},{"time":22894,"x":224,"y":217},{"time":22946,"x":223,"y":217},{"time":22963,"x":222,"y":218},{"time":22981,"x":222,"y":219},{"time":23016,"x":222,"y":220},{"time":23052,"x":221,"y":220},{"time":23141,"x":221,"y":221},{"time":23163,"x":221,"y":222},{"time":23202,"x":221,"y":223},{"time":23237,"x":221,"y":224},{"time":23272,"x":222,"y":224},{"time":23328,"x":223,"y":224},{"time":23345,"x":227,"y":225},{"time":23362,"x":228,"y":225},{"time":23379,"x":229,"y":225},{"time":23396,"x":230,"y":226},{"time":23413,"x":231,"y":226},{"time":23431,"x":239,"y":226},{"time":23449,"x":240,"y":226},{"time":23486,"x":241,"y":226},{"time":23504,"x":242,"y":226},{"time":23522,"x":244,"y":226},{"time":23542,"x":246,"y":226},{"time":23562,"x":247,"y":226},{"time":23580,"x":250,"y":226},{"time":23615,"x":252,"y":226},{"time":23650,"x":253,"y":226},{"time":23667,"x":254,"y":226},{"time":23718,"x":255,"y":226},{"time":23808,"x":256,"y":226},{"time":23897,"x":257,"y":226},{"time":23950,"x":258,"y":226},{"time":23967,"x":258,"y":227},{"time":23985,"x":259,"y":227},{"time":24019,"x":260,"y":227},{"time":24037,"x":261,"y":227},{"time":24054,"x":262,"y":227},{"time":24072,"x":263,"y":227},{"time":24094,"x":267,"y":227},{"time":24112,"x":271,"y":228},{"time":24147,"x":273,"y":228},{"time":24182,"x":274,"y":228},{"time":24364,"x":275,"y":229},{"time":24381,"x":275,"y":230},{"time":24418,"x":275,"y":231},{"time":24486,"x":275,"y":232},{"time":24521,"x":275,"y":233},{"time":24539,"x":275,"y":234},{"time":24581,"x":275,"y":235},{"time":24602,"x":273,"y":235},{"time":24620,"x":272,"y":236},{"time":24637,"x":272,"y":237},{"time":24671,"x":271,"y":237},{"time":24695,"x":271,"y":238},{"time":24729,"x":271,"y":239},{"time":24746,"x":271,"y":240},{"time":24764,"x":269,"y":240},{"time":24818,"x":269,"y":241},{"time":24869,"x":268,"y":242},{"time":24904,"x":268,"y":243},{"time":24938,"x":268,"y":244},{"time":24954,"x":267,"y":245},{"time":24989,"x":266,"y":246},{"time":25008,"x":266,"y":247},{"time":25028,"x":266,"y":248},{"time":25046,"x":265,"y":248},{"time":25063,"x":265,"y":249},{"time":25116,"x":265,"y":250},{"time":25134,"x":264,"y":250},{"time":25169,"x":264,"y":251},{"time":25205,"x":264,"y":252},{"time":25222,"x":263,"y":254},{"time":25241,"x":262,"y":256},{"time":25264,"x":262,"y":257},{"time":25318,"x":262,"y":258},{"time":25352,"x":262,"y":259},{"time":25404,"x":262,"y":260},{"time":25422,"x":262,"y":261},{"time":25442,"x":261,"y":262},{"time":25479,"x":261,"y":263},{"time":25513,"x":261,"y":265},{"time":25549,"x":260,"y":267},{"time":25583,"x":259,"y":267},{"time":25618,"x":259,"y":269},{"time":25636,"x":258,"y":269},{"time":25654,"x":258,"y":271},{"time":25689,"x":257,"y":273},{"time":25727,"x":255,"y":275},{"time":25744,"x":253,"y":277},{"time":25764,"x":251,"y":280},{"time":25782,"x":250,"y":281},{"time":25800,"x":249,"y":282},{"time":25836,"x":248,"y":283},{"time":25871,"x":247,"y":284},{"time":25889,"x":245,"y":286},{"time":25908,"x":244,"y":286},{"time":25929,"x":244,"y":288},{"time":25981,"x":243,"y":289},{"time":25999,"x":241,"y":290},{"time":26017,"x":240,"y":291},{"time":26034,"x":239,"y":292},{"time":26069,"x":238,"y":293},{"time":26106,"x":236,"y":295},{"time":26162,"x":236,"y":296},{"time":26179,"x":234,"y":297},{"time":26233,"x":233,"y":298},{"time":26251,"x":233,"y":299},{"time":26287,"x":232,"y":299},{"time":26305,"x":232,"y":300},{"time":26322,"x":231,"y":300},{"time":26343,"x":231,"y":301},{"time":26381,"x":231,"y":302},{"time":26398,"x":229,"y":302},{"time":26452,"x":229,"y":303},{"time":26470,"x":229,"y":304},{"time":26488,"x":229,"y":305},{"time":26505,"x":229,"y":306},{"time":26527,"x":229,"y":308},{"time":26544,"x":229,"y":309},{"time":26579,"x":229,"y":311},{"time":26632,"x":229,"y":312},{"time":26719,"x":229,"y":314},{"time":26828,"x":229,"y":315},{"time":26864,"x":230,"y":315},{"time":26899,"x":231,"y":315},{"time":26917,"x":232,"y":315},{"time":26935,"x":233,"y":315},{"time":26952,"x":234,"y":315},{"time":26970,"x":235,"y":315},{"time":26988,"x":238,"y":315},{"time":27007,"x":240,"y":315},{"time":27027,"x":242,"y":315},{"time":27045,"x":243,"y":315},{"time":27063,"x":245,"y":314},{"time":27080,"x":245,"y":312},{"time":27098,"x":248,"y":312},{"time":27134,"x":248,"y":311},{"time":27169,"x":250,"y":310},{"time":27187,"x":251,"y":310},{"time":27242,"x":253,"y":309},{"time":27261,"x":253,"y":307},{"time":27279,"x":254,"y":306},{"time":27367,"x":256,"y":305},{"time":27385,"x":257,"y":305},{"time":27436,"x":258,"y":304},{"time":27472,"x":260,"y":303},{"time":27511,"x":261,"y":303},{"time":27546,"x":262,"y":302},{"time":27598,"x":263,"y":302},{"time":27633,"x":264,"y":302},{"time":27650,"x":265,"y":302},{"time":27668,"x":268,"y":302},{"time":27704,"x":270,"y":302},{"time":27722,"x":271,"y":302},{"time":27741,"x":272,"y":302},{"time":27761,"x":273,"y":302},{"time":27779,"x":274,"y":302},{"time":27796,"x":275,"y":302},{"time":27830,"x":276,"y":302},{"time":27883,"x":277,"y":302},{"time":27901,"x":278,"y":302},{"time":27936,"x":279,"y":302},{"time":27954,"x":280,"y":302},{"time":27972,"x":281,"y":302},{"time":28010,"x":282,"y":302},{"time":28045,"x":283,"y":302},{"time":28064,"x":284,"y":302},{"time":28082,"x":285,"y":302},{"time":28117,"x":286,"y":302},{"time":28135,"x":288,"y":302},{"time":28153,"x":289,"y":302},{"time":28188,"x":290,"y":302},{"time":28234,"x":293,"y":302},{"time":28250,"x":294,"y":302},{"time":28284,"x":295,"y":302},{"time":28301,"x":298,"y":302},{"time":28317,"x":302,"y":302},{"time":28333,"x":303,"y":302},{"time":28369,"x":304,"y":302},{"time":28386,"x":305,"y":302},{"time":28404,"x":308,"y":302},{"time":28466,"x":309,"y":302},{"time":28499,"x":310,"y":302},{"time":28520,"x":311,"y":302},{"time":28537,"x":312,"y":302},{"time":28595,"x":313,"y":302}],"type":"draw"},{"col":16777113,"id":0,"fx":270,"fy":301,"time":29964,"childlist":[{"time":30086,"x":271,"y":301},{"time":30104,"x":283,"y":301},{"time":30122,"x":288,"y":301},{"time":30142,"x":294,"y":301},{"time":30178,"x":295,"y":301},{"time":30195,"x":296,"y":301},{"time":30212,"x":300,"y":301},{"time":30235,"x":303,"y":302},{"time":30252,"x":307,"y":302},{"time":30268,"x":309,"y":302},{"time":30286,"x":310,"y":302},{"time":30303,"x":311,"y":302},{"time":30320,"x":312,"y":303},{"time":30339,"x":316,"y":303},{"time":30356,"x":317,"y":303},{"time":30585,"x":318,"y":303},{"time":30620,"x":318,"y":304},{"time":30663,"x":318,"y":305},{"time":30716,"x":318,"y":306},{"time":30750,"x":319,"y":306},{"time":30785,"x":319,"y":307},{"time":30837,"x":320,"y":308},{"time":30855,"x":320,"y":309},{"time":30874,"x":323,"y":309},{"time":30912,"x":323,"y":311},{"time":30931,"x":324,"y":311},{"time":30948,"x":324,"y":312},{"time":30965,"x":325,"y":312},{"time":30982,"x":327,"y":314},{"time":31000,"x":329,"y":314},{"time":31017,"x":329,"y":315},{"time":31035,"x":330,"y":315},{"time":31052,"x":334,"y":317},{"time":31070,"x":336,"y":319},{"time":31087,"x":337,"y":319},{"time":31126,"x":340,"y":322},{"time":31144,"x":341,"y":323},{"time":31162,"x":342,"y":324},{"time":31196,"x":342,"y":325},{"time":31214,"x":344,"y":326},{"time":31231,"x":344,"y":327},{"time":31249,"x":345,"y":328},{"time":31284,"x":348,"y":331},{"time":31319,"x":349,"y":333},{"time":31336,"x":349,"y":335},{"time":31353,"x":349,"y":336},{"time":31370,"x":350,"y":336},{"time":31388,"x":350,"y":338},{"time":31430,"x":351,"y":339},{"time":31447,"x":351,"y":341},{"time":31512,"x":352,"y":342},{"time":31529,"x":352,"y":344},{"time":31547,"x":353,"y":347},{"time":31565,"x":353,"y":349},{"time":31582,"x":354,"y":349},{"time":31635,"x":354,"y":351},{"time":31669,"x":355,"y":351},{"time":31686,"x":355,"y":352},{"time":32116,"x":364,"y":345},{"time":32131,"x":364,"y":344},{"time":32166,"x":364,"y":343},{"time":32185,"x":364,"y":342},{"time":32204,"x":364,"y":341},{"time":32237,"x":364,"y":337},{"time":32279,"x":364,"y":335},{"time":32313,"x":364,"y":333},{"time":32345,"x":362,"y":330},{"time":32368,"x":360,"y":328},{"time":32413,"x":360,"y":327},{"time":32433,"x":360,"y":323},{"time":32450,"x":358,"y":321},{"time":32468,"x":358,"y":320},{"time":32500,"x":357,"y":317},{"time":32530,"x":356,"y":315},{"time":32545,"x":355,"y":312},{"time":32558,"x":354,"y":309},{"time":32570,"x":354,"y":308},{"time":32597,"x":354,"y":306},{"time":32612,"x":354,"y":305},{"time":32625,"x":354,"y":303},{"time":32644,"x":354,"y":301},{"time":32661,"x":354,"y":300},{"time":32678,"x":354,"y":294},{"time":32696,"x":354,"y":292},{"time":32713,"x":354,"y":290},{"time":32732,"x":354,"y":289},{"time":32752,"x":355,"y":284},{"time":32772,"x":356,"y":280},{"time":32794,"x":357,"y":278},{"time":32813,"x":357,"y":276},{"time":32833,"x":359,"y":274},{"time":32869,"x":359,"y":272},{"time":32904,"x":363,"y":267},{"time":32944,"x":364,"y":266},{"time":32962,"x":365,"y":266},{"time":32980,"x":365,"y":264},{"time":32997,"x":366,"y":264},{"time":33050,"x":368,"y":263},{"time":33084,"x":368,"y":261},{"time":33116,"x":370,"y":261},{"time":33133,"x":371,"y":261},{"time":33151,"x":372,"y":261},{"time":33185,"x":374,"y":260},{"time":33203,"x":375,"y":260},{"time":33239,"x":377,"y":260},{"time":33258,"x":379,"y":260},{"time":33278,"x":381,"y":260},{"time":33295,"x":382,"y":260},{"time":33337,"x":384,"y":260},{"time":33356,"x":386,"y":260},{"time":33380,"x":388,"y":260},{"time":33397,"x":390,"y":260},{"time":33414,"x":392,"y":260},{"time":33431,"x":396,"y":260},{"time":33448,"x":398,"y":260},{"time":33464,"x":399,"y":260},{"time":33480,"x":401,"y":260},{"time":33498,"x":404,"y":260},{"time":33516,"x":407,"y":260},{"time":33533,"x":410,"y":260},{"time":33553,"x":414,"y":260},{"time":33569,"x":422,"y":259},{"time":33586,"x":424,"y":259},{"time":33604,"x":425,"y":258},{"time":33625,"x":426,"y":258},{"time":33648,"x":427,"y":257},{"time":33666,"x":428,"y":257},{"time":33684,"x":428,"y":256},{"time":33754,"x":430,"y":256},{"time":33779,"x":430,"y":254},{"time":33832,"x":431,"y":253},{"time":33878,"x":431,"y":252},{"time":33929,"x":431,"y":251},{"time":33949,"x":431,"y":250},{"time":33966,"x":431,"y":249},{"time":33983,"x":431,"y":248},{"time":33999,"x":429,"y":248},{"time":34033,"x":429,"y":247},{"time":34068,"x":427,"y":247},{"time":34103,"x":426,"y":247},{"time":34137,"x":425,"y":247},{"time":34156,"x":424,"y":247},{"time":34176,"x":421,"y":247},{"time":34192,"x":419,"y":247},{"time":34213,"x":416,"y":247},{"time":34229,"x":415,"y":247},{"time":34252,"x":413,"y":247},{"time":34269,"x":410,"y":247},{"time":34285,"x":407,"y":247},{"time":34319,"x":406,"y":247},{"time":34336,"x":405,"y":247},{"time":34353,"x":403,"y":247},{"time":34369,"x":400,"y":246},{"time":34386,"x":398,"y":246},{"time":34403,"x":397,"y":246},{"time":34438,"x":396,"y":246},{"time":34457,"x":390,"y":244},{"time":34476,"x":389,"y":243},{"time":34493,"x":388,"y":243},{"time":34527,"x":387,"y":243},{"time":34562,"x":385,"y":242},{"time":34598,"x":384,"y":242},{"time":34633,"x":383,"y":242},{"time":34669,"x":382,"y":242},{"time":34686,"x":381,"y":242},{"time":34724,"x":380,"y":241},{"time":34762,"x":379,"y":241},{"time":34798,"x":378,"y":241},{"time":34832,"x":377,"y":241},{"time":34850,"x":376,"y":240}],"type":"draw"},{"col":16777113,"id":0,"fx":316,"fy":160,"time":36598,"childlist":[{"time":36664,"x":316,"y":161},{"time":36682,"x":316,"y":162},{"time":36716,"x":315,"y":163},{"time":36733,"x":315,"y":164},{"time":36750,"x":315,"y":165},{"time":36768,"x":314,"y":167},{"time":36785,"x":314,"y":169},{"time":36838,"x":314,"y":170},{"time":36858,"x":313,"y":171},{"time":36897,"x":313,"y":172},{"time":36914,"x":312,"y":172},{"time":37038,"x":311,"y":172},{"time":37078,"x":311,"y":171},{"time":37095,"x":310,"y":171},{"time":37114,"x":310,"y":169},{"time":37148,"x":310,"y":168},{"time":37183,"x":310,"y":167},{"time":37217,"x":310,"y":166},{"time":37252,"x":310,"y":164},{"time":37290,"x":310,"y":163},{"time":37329,"x":310,"y":162},{"time":37364,"x":311,"y":161},{"time":37382,"x":311,"y":160},{"time":37399,"x":313,"y":160},{"time":37451,"x":314,"y":160},{"time":37486,"x":315,"y":159},{"time":37538,"x":316,"y":159},{"time":37557,"x":317,"y":159},{"time":37631,"x":318,"y":159}],"type":"draw"},{"col":16777113,"id":0,"fx":360,"fy":171,"time":38327,"childlist":[{"time":38456,"x":359,"y":172},{"time":38486,"x":359,"y":175},{"time":38502,"x":358,"y":177},{"time":38518,"x":358,"y":179},{"time":38551,"x":358,"y":180},{"time":38569,"x":358,"y":181},{"time":38588,"x":358,"y":182},{"time":38683,"x":358,"y":183},{"time":38844,"x":359,"y":183},{"time":38861,"x":360,"y":182},{"time":38879,"x":360,"y":180},{"time":38915,"x":361,"y":179},{"time":39001,"x":361,"y":178},{"time":39052,"x":361,"y":177},{"time":39069,"x":361,"y":176},{"time":39088,"x":361,"y":175},{"time":39129,"x":361,"y":174},{"time":39161,"x":361,"y":173},{"time":39191,"x":361,"y":172},{"time":39258,"x":361,"y":171}],"type":"draw"}]';
//			
			var comList:Array = JSON.decode(comListString);
			
			_player.setCommandList(comList);
			musicStart();
			_ch.stop();
		}
		
		private function musicStart():void {
			sound = new Sound(new URLRequest("http://swimmingbird.heteml.jp/wonderfl/sounds/stars.mp3"), new SoundLoaderContext(10000, true));
//			sound = new Sound(new URLRequest("http://swimmingbird.heteml.jp/wonderfl/sounds/stars_long.mp3"), new SoundLoaderContext(10000, true));
			_ch = sound.play();
			bA = new ByteArray();
			//			stage.quality = StageQuality.LOW;
			stage.fullScreenSourceRect=new Rectangle(0,0,465,465); 
			addEventListener(Event.ENTER_FRAME, updateSpectrum);
			
			//timer start
			_startTime = getTimer();
			
			/**
			 * action setup
			 */
			_field.addEventListener(MouseEvent.MOUSE_DOWN, _fieldDownHandler);
			_field.addEventListener(MouseEvent.MOUSE_UP, _fieldUpHandler);
			_field.addEventListener(Event.ENTER_FRAME, _enterFrameHandler);
			
			//Play Draw
			_player.addEventListener(DrawPlayer.DO_ROOT, _rootEventHandler);
			_player.addEventListener(DrawPlayer.DO_NODE, _nodeEventHandler);
			_player.addEventListener(DrawPlayer.DO_CLEAR, _clearEventHandler);
		}
		
		public function setupDisplay():void {
			addChild(_paintField);
			addChild(_field);
			addChild(_clearEffBmp);
			addChild(_uiField);
			addChild(_stopUiField);
			addChild(_startField);
			_uiField.addChild(_colSelector);
			_colSelector.x = 20;
			_colSelector.y = 85;
			_stopUiField.visible = true;
			_uiField.visible = false;
			_startField.visible = false;
		}
		/**
		 * mouse Action
		 */
		private function _fieldDownHandler(event:MouseEvent):void {
			addRoot();
			_col = _colSelector.currentColor;
			_field.addEventListener(MouseEvent.MOUSE_MOVE, _fieldMoveHandler);
			var currentTime:int = getTimer() - _startTime;
			var id:int=0;
			_rec.startLineRec(id,mouseX,mouseY,_colSelector.currentColor,currentTime);
		}
		private function _fieldUpHandler(event:MouseEvent):void {
			//今書いたものにベクトル情報追加
			_field.removeEventListener(MouseEvent.MOUSE_MOVE, _fieldMoveHandler);
		}
		private function _fieldMoveHandler(event:MouseEvent):void {
			addNode(_field.mouseX, _field.mouseY);
			//rec
			var currentTime:int = getTimer() - _startTime;
			_rec.addPoint(_field.mouseX, _field.mouseY, currentTime);
		}
		/**
		 * play Action
		 */
		private function _rootEventHandler(event:Event):void {
			addRoot();
			_col = _player.cur_Col;
		}
		private function _nodeEventHandler(event:Event):void {
			addNode(_player.cur_x, _player.cur_y);	
		}
		private function _clearEventHandler(event:Event):void {
			clear();
		}
		/**
		 * node Action
		 */
		private function addRoot():void {
			trace("adRoot");
			_currentListIndex = _pointListList.length;
			_pointListList.push(new Array());
		}
		private function addNode(px:Number, py:Number):void {
			trace("addNode");
			var _list:Array = _pointListList[_currentListIndex];
			_list.push(new LinePoint(px, py));
			var i:int = _list.length-1;
			_list[i].color = _col;
			if(_list[i-1]) {
				var _pt:LinePoint = _list[i];
				var _dx:Number = _list[i].x - _list[i-1].x;
				var _dy:Number = _list[i].y - _list[i-1].y;
				var _distance:Number = Math.sqrt(_dx*_dx+_dy*_dy);
				_pt.vx = _list[i].x - _list[i-1].x;
				_pt.vy = _list[i].y - _list[i-1].y;
				//				_pt.vx = _dx/_distance;
				//				_pt.vy = _dy/_distance;
				_pt.genRotation();
			}
		}
		private function _enterFrameHandler(event:Event):void {
			var i:int;
			var len:int = _pointListList.length;
			_paintField.graphics.clear();
			_paintField.graphics.lineStyle(1,0xFFFFFF);
			var _list:Array;
			var j:int;
			var _listlen:int;
			var nx:Number;
			var ny:Number;
			var dist:Number;
			if(_actionFlg) {
				for(i=0; i<len; i++) {
					_list = _pointListList[i];
					_listlen = _list.length;
					if(_listlen>0) {
						_paintField.graphics.lineStyle(1,_list[0].color);
						_paintField.graphics.moveTo(_list[0].x, _list[0].y);
						//スペクトラムずらす
						for(j=_listlen-1;j>0;j--) {
							_list[j].spectrum = _list[j-1].spectrum;
						}
						_list[0].spectrum = spectrum[10];
						for(j=0;j<_listlen;j++) {
							//							_paintField.graphics.moveTo(_list[j].x, _list[j].y);
							if(_list[j].r){
								nx = -(_list[j].vy);
								ny = _list[j].vx;
								dist = Math.sqrt(nx*nx+ny*ny);
								//							    _list[j].spectrum = spectrum[j];//スペクトラム直でまっぴんぐ
								_paintField.graphics.lineTo(_list[j].x+nx*_list[j].spectrum*7, _list[j].y+ny*_list[j].spectrum*7);
								//							    _paintField.graphics.lineTo(_list[j].x+_list[j].spectrum*2*nx/dist, _list[j].y+40*_list[j].spectrum*2*ny/dist);
							}
						}
					}
				}
			} else {
				for(i=0; i<len; i++) {
					_list = _pointListList[i];
					_listlen = _list.length;
					if(_listlen>0) {
						_paintField.graphics.moveTo(_list[0].x, _list[0].y); 
						for(j=0;j<_listlen;j++) {
							_paintField.graphics.lineTo(_list[j].x, _list[j].y);
						}
					}
				}
			}
		}
		
		private function updateSpectrum(e:Event):void {
			SoundMixer.computeSpectrum(bA,false,0);
			spectrum = [];
			var i:int;
			for(i=0; i<256; i++){
				spectrum[i] = bA.readFloat();
			}
			for(i=256; i<512; i++){
				spectrum[i] = bA.readFloat();
			}
			bA.position=0;
			lowVal = spectrum[0];
			middleVal = spectrum[1];
			highVal = spectrum[2];
		} 
		
		/**
		 * ui Action
		 */
		private function startHandler(event:MouseEvent):void {
			_startField.visible = false;
			_uiField.visible = true;
			musicStart();
		}
		private function actionHandler(event:MouseEvent):void {
			_actionFlg = true;
		}
		private function noActionHandler(event:MouseEvent):void {
			_actionFlg = false;
		}
		private function clearHandler(event:MouseEvent):void {
			_rec.addClear(getTimer()-_startTime)
			clear();
		}
		private function plotHandler(event:MouseEvent):void {
			_rec.outPut();
		}
		private function stopHandler(event:MouseEvent):void {
			_ch.stop();
			clear();
			_player.setCommandList(_rec.commandList);
			Tweener.addTween(_uiField, {_autoAlpha:0, time:0.5, transition:Equations.easeOutQuint});
			Tweener.addTween(_stopUiField, {_autoAlpha:1, time:0.5, transition:Equations.easeOutQuint});
		}
		private function playDataHandler(event:MouseEvent):void {
			_ch = sound.play(0);
			_player.playStart();
		}
		private function stopDrawHandler(event:MouseEvent):void {
			clear();
			_currentListIndex = 0;
			_ch.stop();
			_player.playStop();
		}
		public var clearCnt:Number = 0;
		private function clear():void {
			_clearBmd.fillRect(new Rectangle(0,0,465,465),0);
			_clearBmd.draw(_paintField);
			_clearEffBmp.visible = true;
			_clearEffBmp.alpha = 1;
			_clearEffBmp.scaleX = _clearEffBmp.scaleY = 1;
			Tweener.addTween(_clearEffBmp, {/*scaleX:2, scaleY:2, */_autoAlpha:0, time:1, transition:Equations.easeOutQuint});
			clearComp();
			//			var i:int;
			//			var len:int = _pointListList.length;
			//			var _list:Array;
			//			var _listlen:int;
			//			var j:int;
			//			var nx:int, ny:int;
			//			for(i=0; i<len; i++) {
			//				_list = _pointListList[i];
			//				_listlen = _list.length;
			//				for(j=0;j<_listlen;j++) {
			//					_list[j].endAction();
			//				}
			//			}
			//			Tweener.addTween(this, {clearCnt:10, time:0.8, transition:Equations.easeOutQuint, onComplete:clearComp});
		}
		private function clearComp():void {
			var i:int;
			var len:int = _pointListList.length;
			var _list:Array;
			var _listlen:int;
			var j:int;
			var nx:int, ny:int;
			for(i=0; i<len; i++) {
				_list = _pointListList[i];
				_listlen = _list.length;
				for(j=0;j<_listlen;j++) {
					_list[j] = null;
				}
			}
			for(i=0; i<len; i++) {
				_list = _pointListList[i];
				_list.length = 0;
				_list = null;
			}
			_pointListList.length = 0;
			_pointListList = new Array();
		}
	}
}
import caurina.transitions.Equations;
import caurina.transitions.Tweener;

import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.external.ExternalInterface;
import flash.geom.Point;
import flash.utils.Timer;
import flash.utils.getTimer;

import org.osmf.events.TimeEvent;



class LinePoint extends Point {
	public var vx:Number, vy:Number, r:Number;
	public var spectrum:Number = 0;
	public var color:Number;
	public function LinePoint(x:Number=0, y:Number=0) {
		super(x,y);
	}
	public function genRotation():void {
		r = Math.atan2(vy, vx);
	}
	public function endAction():void {
		var _targetSp:Number = spectrum * 20;
		Tweener.addTween(this, {spectrum:_targetSp, time:0.5, transition:Equations.easeOutQuint});
	}
}

class ColorSelector extends Sprite {
	public var colorList:Array = new Array();
	public var currentColor:Number = 0xFFFF32;
	private var _colTotal:int = 5;
	private var _selectedColor:Sprite = new Sprite();
	
	public function ColorSelector() {
		init();
		setupDisplay();
	}
	public function init():void {
		var i:int;
		for(i=0; i<_colTotal; i++) {
			var block:Sprite = new Sprite();
			//			block.name = String(0xFF0000*Math.random());
			block.addEventListener(MouseEvent.CLICK, selectedHandler);
			colorList.push(block);
		}
		colorList[0].name = String(0xFFFF32);
		colorList[1].name = String(0xFFFF99);
		        colorList[2].name = String(0xFFFFCD);
		        colorList[3].name = String(0xFFCC32);
		        colorList[4].name = String(0xFFCC00);
		for(i=0; i<_colTotal; i++) {
			colorList[i].graphics.clear();
			colorList[i].graphics.beginFill(Number(colorList[i].name));
			colorList[i].graphics.drawRect(0,0,10,10);
			colorList[i].graphics.endFill();
		}
		
		currentColor = Number(colorList[0].name);
		_selectedColor.graphics.beginFill(currentColor);
		_selectedColor.graphics.drawRect(0,0,19,19);
		_selectedColor.graphics.endFill();
		
	}
	public function setupDisplay():void {
		addChild(_selectedColor);
		for(var i:int=0; i<_colTotal; i++) {
			addChild(colorList[i]);
			colorList[i].x = i*(colorList[i].width+1);
			colorList[i].y = 20;
		}
	}
	private function selectedHandler(event:MouseEvent):void {
		_selectedColor.graphics.clear();
		currentColor = Number(event.target.name);
		_selectedColor.graphics.beginFill(currentColor);
		_selectedColor.graphics.drawRect(0,0,19,19);
		_selectedColor.graphics.endFill();
	}
}

class DrawPlayer extends Sprite {
	
	public static const DO_ROOT:String = "DoRoot";
	public static const DO_NODE:String = "DoNode";
	public static const DO_CLEAR:String = "DoClear";
	private var _commandList:Array;
	private var _timer:Timer = new Timer(1);
	private var _rootIndex:int = 0;
	private var _nodeIndex:int = 0;
	private var _counter:int = 0;
	private var _watchTarget:int = 0; //0:親, 1:子
	
	//現在の命令
	public var cur_Command:int = 0; //0:親, 1:子
	public var cur_Col:Number;
	public var cur_x:Number;
	public var cur_y:Number;
	
	//timer
	private var _startTime:Number;
	
	public function DrawPlayer() {
		super();
	}
	
	public function setCommandList(list:Array):void {
		_commandList = list;
	}
	
	public function playStart():void {
		_counter = 0;
		_rootIndex = 0;
		_nodeIndex = 0;
		_watchTarget = 0;
		_startTime = getTimer();
		addEventListener(Event.ENTER_FRAME, _commandCheckHandler);
	}
	public function playStop():void {
		removeEventListener(Event.ENTER_FRAME, _commandCheckHandler);
	}
	
	private function _commandCheckHandler(event:Event):void {
		_counter = getTimer()-_startTime;
		//まだ終わってなかったら終わる
		if(_rootIndex == _commandList.length) {
			if(hasEventListener(Event.ENTER_FRAME))removeEventListener(Event.ENTER_FRAME, _commandCheckHandler);
			return;
		}
		if(_watchTarget==0) {
			if(_commandList[_rootIndex].time<=_counter) {
				switch(_commandList[_rootIndex].type) {
					case "clear":
						_watchTarget = 0;
						dispatchEvent(new Event(DO_CLEAR));
						_rootIndex++;
						break;
					case "draw":
						cur_Col = _commandList[_rootIndex].col;
						cur_x = _commandList[_rootIndex].fx;
						cur_y = _commandList[_rootIndex].fy;
						dispatchEvent(new Event(DO_ROOT));
						_watchTarget = 1;
						break;
				}
			}
		} else {
			var obj:Object = _commandList[_rootIndex][_nodeIndex];
			//マウス動かなかった時は親にそのまま向ける
			if(!_commandList[_rootIndex].childlist[_nodeIndex]){
				_rootIndex++;
				_nodeIndex=0;
				_watchTarget=0;
				return;
			}
			if(_commandList[_rootIndex].childlist[_nodeIndex].time<=_counter) {
				cur_x = _commandList[_rootIndex].childlist[_nodeIndex].x;
				cur_y = _commandList[_rootIndex].childlist[_nodeIndex].y;
				dispatchEvent(new Event(DO_NODE));
				_nodeIndex++;
				//最後尾到達で親監視に切り替え
				if(_nodeIndex==_commandList[_rootIndex].length-1) {
					//親も最後尾なら終了
					if(_rootIndex==_commandList.length-1) {
						_timer.removeEventListener(TimerEvent.TIMER, _commandCheckHandler);
						_timer.stop();
						return;
					} else {
						_watchTarget = 0;
						_rootIndex++;
					}
				}
			}
			
		}
	}
	
	private function _commandCheck():void{
		
	}
	
}

class DrawRecoder extends Sprite {
	private var _commandList:Array = new Array();
	public function get commandList():Array {
		return _commandList;
	}
	public function DrawRecoder() {
		
	}
	
	public function startLineRec(_id:int,_mx:Number,_my:Number,_col:Number, _time:Number):void {
		_commandList.push({type:"draw", id:_id,fx:_mx, fy:_my, col:_col, time:_time, childlist:new Array()});
	}
	public function addPoint(_mx:Number, _my:Number, _time:Number):void {
		var _currentList:Array = _commandList[_commandList.length-1].childlist;
		_currentList.push({x:_mx, y:_my, time:_time});
	}
	public function addClear(_time:Number):void {
		_commandList.push({type:"clear", time:_time});
	}
	public function endLineRec():void {
		
	}
	
	public function outPut():void {
		var i:int;
		var j:int;
	}
}