feat.Kinoppy6 forked from: LivePaintwithSound
forked from LivePaintwithSound (diff: 9)
曲は夢幻のオルゴール工房さんにて配布されているmp3ファイルを使用しています http://www.dream-orgel.net/diary.cgi?no=120&continue=on
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/fxus
*/
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 = '[{"fx":152,"id":0,"fy":217,"childlist":[{"time":1769,"x":151,"y":217},{"time":1791,"x":150,"y":217},{"time":1812,"x":146,"y":218},{"time":1832,"x":143,"y":219},{"time":1853,"x":141,"y":219},{"time":1874,"x":140,"y":219},{"time":1894,"x":138,"y":219},{"time":1935,"x":137,"y":219},{"time":1958,"x":136,"y":219},{"time":1978,"x":135,"y":219},{"time":2019,"x":134,"y":219},{"time":2040,"x":133,"y":219},{"time":2060,"x":132,"y":219},{"time":2101,"x":131,"y":218},{"time":2122,"x":130,"y":218},{"time":2143,"x":129,"y":218},{"time":2164,"x":128,"y":217},{"time":2185,"x":127,"y":216},{"time":2205,"x":126,"y":216},{"time":2226,"x":126,"y":215},{"time":2246,"x":125,"y":215},{"time":2267,"x":124,"y":214},{"time":2289,"x":123,"y":213},{"time":2310,"x":122,"y":213},{"time":2330,"x":121,"y":212},{"time":2351,"x":121,"y":211},{"time":2372,"x":120,"y":210},{"time":2394,"x":119,"y":209},{"time":2414,"x":118,"y":209},{"time":2435,"x":117,"y":208},{"time":2459,"x":117,"y":207},{"time":2480,"x":116,"y":206},{"time":2521,"x":115,"y":205},{"time":2542,"x":114,"y":204},{"time":2583,"x":113,"y":203},{"time":2622,"x":112,"y":201},{"time":2644,"x":111,"y":201},{"time":2664,"x":111,"y":200},{"time":2704,"x":110,"y":199},{"time":2726,"x":109,"y":197},{"time":2768,"x":108,"y":196},{"time":2810,"x":107,"y":195},{"time":2831,"x":107,"y":194},{"time":2852,"x":106,"y":193},{"time":2873,"x":106,"y":192},{"time":2895,"x":105,"y":191},{"time":2916,"x":105,"y":190},{"time":2937,"x":104,"y":189},{"time":2958,"x":103,"y":188},{"time":2979,"x":103,"y":187},{"time":3000,"x":102,"y":186},{"time":3021,"x":101,"y":185},{"time":3043,"x":100,"y":184},{"time":3067,"x":100,"y":183},{"time":3087,"x":100,"y":182},{"time":3108,"x":99,"y":182},{"time":3128,"x":98,"y":181},{"time":3149,"x":98,"y":180},{"time":3169,"x":97,"y":180},{"time":3190,"x":96,"y":179},{"time":3210,"x":95,"y":179},{"time":3231,"x":95,"y":178},{"time":3252,"x":94,"y":178},{"time":3292,"x":93,"y":178},{"time":3311,"x":92,"y":177},{"time":3353,"x":91,"y":177},{"time":3394,"x":90,"y":177},{"time":3414,"x":90,"y":176},{"time":3435,"x":89,"y":176},{"time":3499,"x":88,"y":176},{"time":3540,"x":87,"y":176},{"time":3622,"x":86,"y":176},{"time":3664,"x":85,"y":176},{"time":3704,"x":85,"y":177},{"time":3727,"x":84,"y":177},{"time":3830,"x":83,"y":177},{"time":3851,"x":83,"y":178},{"time":3872,"x":82,"y":179},{"time":3954,"x":82,"y":180},{"time":4002,"x":81,"y":180},{"time":4021,"x":81,"y":181},{"time":4080,"x":80,"y":182},{"time":4100,"x":80,"y":183},{"time":4142,"x":80,"y":184},{"time":4203,"x":80,"y":185},{"time":4227,"x":79,"y":186},{"time":4247,"x":79,"y":187},{"time":4287,"x":79,"y":188},{"time":4307,"x":79,"y":189},{"time":4346,"x":79,"y":190},{"time":4367,"x":78,"y":192},{"time":4408,"x":78,"y":193},{"time":4449,"x":78,"y":194},{"time":4469,"x":78,"y":195},{"time":4490,"x":78,"y":196},{"time":4511,"x":78,"y":197},{"time":4552,"x":78,"y":198},{"time":4573,"x":78,"y":199},{"time":4594,"x":78,"y":200},{"time":4614,"x":78,"y":201},{"time":4635,"x":78,"y":202},{"time":4677,"x":78,"y":203},{"time":4698,"x":78,"y":204},{"time":4719,"x":79,"y":205},{"time":4740,"x":79,"y":207},{"time":4761,"x":79,"y":208},{"time":4782,"x":79,"y":209},{"time":4803,"x":80,"y":210},{"time":4827,"x":80,"y":211},{"time":4847,"x":80,"y":212},{"time":4868,"x":81,"y":214},{"time":4889,"x":81,"y":215},{"time":4909,"x":81,"y":216},{"time":4930,"x":82,"y":217},{"time":4951,"x":82,"y":218},{"time":4972,"x":83,"y":220},{"time":4994,"x":83,"y":221},{"time":5014,"x":83,"y":222},{"time":5035,"x":84,"y":223},{"time":5059,"x":84,"y":225},{"time":5079,"x":85,"y":226},{"time":5099,"x":85,"y":227},{"time":5120,"x":86,"y":228},{"time":5142,"x":87,"y":230},{"time":5183,"x":88,"y":231},{"time":5203,"x":88,"y":232},{"time":5227,"x":89,"y":233},{"time":5248,"x":90,"y":234},{"time":5269,"x":90,"y":235},{"time":5293,"x":91,"y":236},{"time":5313,"x":92,"y":237},{"time":5355,"x":93,"y":238},{"time":5376,"x":94,"y":239},{"time":5416,"x":95,"y":240},{"time":5460,"x":96,"y":241},{"time":5501,"x":97,"y":242},{"time":5543,"x":98,"y":243},{"time":5564,"x":99,"y":244},{"time":5584,"x":100,"y":244},{"time":5606,"x":100,"y":245},{"time":5627,"x":101,"y":245},{"time":5649,"x":101,"y":246},{"time":5669,"x":102,"y":246},{"time":5689,"x":103,"y":247},{"time":5711,"x":104,"y":248},{"time":5752,"x":105,"y":248},{"time":5772,"x":106,"y":249},{"time":5794,"x":107,"y":250},{"time":5815,"x":108,"y":250},{"time":5836,"x":109,"y":251},{"time":5860,"x":110,"y":251},{"time":5881,"x":112,"y":253},{"time":5902,"x":114,"y":253},{"time":5927,"x":115,"y":254},{"time":5948,"x":116,"y":254},{"time":5969,"x":117,"y":255},{"time":5994,"x":119,"y":256},{"time":6014,"x":120,"y":256},{"time":6035,"x":121,"y":256},{"time":6056,"x":122,"y":257},{"time":6078,"x":123,"y":257},{"time":6099,"x":125,"y":258},{"time":6120,"x":126,"y":258},{"time":6140,"x":127,"y":258},{"time":6183,"x":128,"y":258},{"time":6222,"x":129,"y":259},{"time":6264,"x":130,"y":259},{"time":6304,"x":131,"y":259},{"time":6346,"x":132,"y":259},{"time":6407,"x":133,"y":260},{"time":6448,"x":134,"y":260},{"time":6489,"x":135,"y":260},{"time":6538,"x":136,"y":260},{"time":6581,"x":136,"y":261},{"time":6602,"x":137,"y":261},{"time":6664,"x":138,"y":262},{"time":6726,"x":139,"y":262},{"time":6747,"x":139,"y":263},{"time":6788,"x":140,"y":263},{"time":6810,"x":140,"y":264},{"time":6851,"x":140,"y":265},{"time":6894,"x":140,"y":266},{"time":6935,"x":140,"y":267},{"time":6963,"x":140,"y":269},{"time":6983,"x":140,"y":270},{"time":7003,"x":140,"y":271},{"time":7023,"x":140,"y":272},{"time":7044,"x":140,"y":273},{"time":7064,"x":140,"y":274},{"time":7085,"x":140,"y":276},{"time":7106,"x":140,"y":277},{"time":7146,"x":139,"y":279},{"time":7167,"x":139,"y":280},{"time":7188,"x":139,"y":281},{"time":7210,"x":138,"y":283},{"time":7231,"x":138,"y":284},{"time":7252,"x":137,"y":286},{"time":7273,"x":137,"y":288},{"time":7294,"x":137,"y":289},{"time":7315,"x":136,"y":290},{"time":7336,"x":136,"y":292},{"time":7356,"x":136,"y":293},{"time":7378,"x":135,"y":295},{"time":7398,"x":135,"y":297},{"time":7419,"x":135,"y":299},{"time":7439,"x":135,"y":300},{"time":7460,"x":135,"y":301},{"time":7481,"x":135,"y":303},{"time":7502,"x":135,"y":304},{"time":7524,"x":134,"y":306},{"time":7546,"x":134,"y":307},{"time":7567,"x":134,"y":309},{"time":7588,"x":134,"y":310},{"time":7609,"x":134,"y":311},{"time":7630,"x":134,"y":312},{"time":7651,"x":134,"y":313},{"time":7672,"x":134,"y":314},{"time":7695,"x":134,"y":315},{"time":7715,"x":134,"y":316},{"time":7734,"x":134,"y":317},{"time":7755,"x":134,"y":318},{"time":7778,"x":134,"y":319},{"time":7798,"x":135,"y":320},{"time":7819,"x":135,"y":321},{"time":7861,"x":136,"y":322},{"time":7881,"x":136,"y":323},{"time":7900,"x":136,"y":324},{"time":7922,"x":137,"y":324},{"time":7943,"x":137,"y":325},{"time":7984,"x":138,"y":326},{"time":8006,"x":139,"y":326},{"time":8048,"x":140,"y":326},{"time":8069,"x":142,"y":327},{"time":8090,"x":143,"y":327},{"time":8112,"x":144,"y":327},{"time":8134,"x":145,"y":327},{"time":8155,"x":145,"y":326},{"time":8177,"x":147,"y":325},{"time":8198,"x":149,"y":322},{"time":8219,"x":150,"y":321},{"time":8240,"x":151,"y":320},{"time":8261,"x":151,"y":318},{"time":8282,"x":152,"y":316},{"time":8302,"x":152,"y":314},{"time":8328,"x":153,"y":312},{"time":8348,"x":153,"y":310},{"time":8370,"x":154,"y":308},{"time":8395,"x":154,"y":305},{"time":8414,"x":155,"y":303},{"time":8434,"x":155,"y":302},{"time":8455,"x":155,"y":300},{"time":8477,"x":156,"y":299},{"time":8498,"x":156,"y":298},{"time":8519,"x":156,"y":297},{"time":8539,"x":156,"y":295},{"time":8561,"x":157,"y":294},{"time":8581,"x":157,"y":293},{"time":8600,"x":157,"y":292},{"time":8621,"x":157,"y":291},{"time":8643,"x":157,"y":290},{"time":8664,"x":157,"y":289},{"time":8684,"x":157,"y":288},{"time":8728,"x":158,"y":287},{"time":8748,"x":158,"y":285},{"time":8788,"x":158,"y":284},{"time":8810,"x":158,"y":283},{"time":8831,"x":159,"y":281},{"time":8871,"x":159,"y":280},{"time":8893,"x":159,"y":279},{"time":8914,"x":159,"y":278},{"time":8936,"x":159,"y":277},{"time":8960,"x":160,"y":276},{"time":9001,"x":160,"y":275},{"time":9022,"x":160,"y":274},{"time":9043,"x":160,"y":273},{"time":9064,"x":160,"y":272},{"time":9086,"x":161,"y":272},{"time":9106,"x":161,"y":271},{"time":9128,"x":161,"y":270},{"time":9149,"x":161,"y":269},{"time":9170,"x":161,"y":268},{"time":9194,"x":162,"y":267},{"time":9421,"x":163,"y":267},{"time":9442,"x":164,"y":267},{"time":9483,"x":165,"y":267},{"time":9525,"x":166,"y":267},{"time":9586,"x":167,"y":267},{"time":9607,"x":168,"y":267},{"time":9628,"x":169,"y":267},{"time":9648,"x":170,"y":267},{"time":9670,"x":171,"y":267},{"time":9695,"x":172,"y":267},{"time":9737,"x":173,"y":267},{"time":9759,"x":175,"y":267},{"time":9780,"x":176,"y":267},{"time":9821,"x":177,"y":267},{"time":9863,"x":178,"y":267},{"time":9926,"x":179,"y":267},{"time":10049,"x":180,"y":267},{"time":10173,"x":180,"y":268},{"time":10193,"x":180,"y":269},{"time":10215,"x":181,"y":270},{"time":10236,"x":181,"y":271},{"time":10261,"x":181,"y":272},{"time":10282,"x":181,"y":273},{"time":10303,"x":181,"y":274},{"time":10328,"x":181,"y":276},{"time":10348,"x":181,"y":277},{"time":10368,"x":181,"y":279},{"time":10387,"x":182,"y":280},{"time":10409,"x":182,"y":282},{"time":10429,"x":182,"y":283},{"time":10449,"x":183,"y":284},{"time":10470,"x":183,"y":286},{"time":10496,"x":183,"y":287},{"time":10515,"x":183,"y":288},{"time":10536,"x":184,"y":289},{"time":10559,"x":184,"y":291},{"time":10579,"x":184,"y":292},{"time":10599,"x":185,"y":294},{"time":10619,"x":185,"y":295},{"time":10640,"x":185,"y":296},{"time":10660,"x":185,"y":298},{"time":10681,"x":186,"y":299},{"time":10702,"x":186,"y":301},{"time":10745,"x":186,"y":302},{"time":10766,"x":187,"y":304},{"time":10786,"x":187,"y":305},{"time":10808,"x":188,"y":305},{"time":10829,"x":188,"y":307},{"time":10850,"x":189,"y":308},{"time":10871,"x":189,"y":309},{"time":10894,"x":189,"y":310},{"time":10915,"x":190,"y":311},{"time":10961,"x":190,"y":313},{"time":10982,"x":191,"y":314},{"time":11002,"x":191,"y":315},{"time":11022,"x":191,"y":316},{"time":11043,"x":192,"y":317},{"time":11065,"x":193,"y":319},{"time":11086,"x":193,"y":321},{"time":11107,"x":194,"y":322},{"time":11128,"x":194,"y":323},{"time":11149,"x":195,"y":323},{"time":11170,"x":195,"y":324},{"time":11196,"x":196,"y":324},{"time":11215,"x":198,"y":325},{"time":11254,"x":199,"y":325},{"time":11276,"x":201,"y":325},{"time":11318,"x":202,"y":325},{"time":11338,"x":203,"y":324},{"time":11361,"x":204,"y":324},{"time":11382,"x":205,"y":324},{"time":11403,"x":205,"y":323},{"time":11428,"x":206,"y":323},{"time":11449,"x":207,"y":323},{"time":11513,"x":208,"y":323},{"time":11533,"x":208,"y":322},{"time":11554,"x":209,"y":322},{"time":11594,"x":210,"y":321},{"time":11635,"x":211,"y":321},{"time":11655,"x":211,"y":320},{"time":11678,"x":212,"y":319},{"time":11699,"x":212,"y":317},{"time":11719,"x":212,"y":316},{"time":11739,"x":213,"y":315},{"time":11760,"x":213,"y":314},{"time":11780,"x":213,"y":311},{"time":11800,"x":213,"y":310},{"time":11830,"x":213,"y":308},{"time":11850,"x":213,"y":307},{"time":11871,"x":213,"y":306},{"time":11892,"x":212,"y":303},{"time":11912,"x":212,"y":298},{"time":11933,"x":212,"y":297},{"time":11955,"x":211,"y":296},{"time":11977,"x":211,"y":295},{"time":11997,"x":211,"y":294},{"time":12017,"x":211,"y":292},{"time":12037,"x":211,"y":291},{"time":12059,"x":211,"y":289},{"time":12079,"x":211,"y":288},{"time":12100,"x":210,"y":287},{"time":12121,"x":210,"y":286},{"time":12141,"x":210,"y":285},{"time":12176,"x":210,"y":284},{"time":12195,"x":210,"y":283},{"time":12214,"x":210,"y":282},{"time":12256,"x":210,"y":279},{"time":12280,"x":210,"y":277},{"time":12299,"x":210,"y":276},{"time":12319,"x":210,"y":275},{"time":12339,"x":209,"y":274},{"time":12360,"x":209,"y":273},{"time":12381,"x":209,"y":272},{"time":12401,"x":208,"y":271},{"time":12421,"x":208,"y":270},{"time":12505,"x":208,"y":268},{"time":12569,"x":207,"y":268},{"time":12683,"x":206,"y":268},{"time":12705,"x":205,"y":268},{"time":12950,"x":206,"y":268},{"time":12967,"x":207,"y":268},{"time":12984,"x":208,"y":269},{"time":13001,"x":210,"y":269},{"time":13018,"x":211,"y":269},{"time":13056,"x":212,"y":269},{"time":13095,"x":213,"y":269},{"time":13115,"x":214,"y":269},{"time":13162,"x":215,"y":269},{"time":13205,"x":216,"y":268},{"time":13227,"x":218,"y":268},{"time":13293,"x":219,"y":268},{"time":13314,"x":219,"y":267},{"time":13356,"x":220,"y":267},{"time":13438,"x":221,"y":267},{"time":13462,"x":221,"y":266},{"time":13482,"x":222,"y":266},{"time":13647,"x":224,"y":269},{"time":13668,"x":224,"y":271},{"time":13688,"x":225,"y":273},{"time":13711,"x":226,"y":275},{"time":13732,"x":228,"y":281},{"time":13753,"x":228,"y":284},{"time":13774,"x":229,"y":285},{"time":13796,"x":230,"y":287},{"time":13817,"x":230,"y":288},{"time":13838,"x":231,"y":289},{"time":13862,"x":231,"y":291},{"time":13882,"x":232,"y":292},{"time":13902,"x":232,"y":293},{"time":13927,"x":233,"y":294},{"time":13948,"x":233,"y":295},{"time":13969,"x":233,"y":296},{"time":13993,"x":234,"y":297},{"time":14014,"x":234,"y":298},{"time":14053,"x":235,"y":299},{"time":14075,"x":235,"y":300},{"time":14096,"x":236,"y":301},{"time":14116,"x":236,"y":302},{"time":14162,"x":237,"y":303},{"time":14181,"x":237,"y":304},{"time":14202,"x":237,"y":305},{"time":14223,"x":238,"y":305},{"time":14243,"x":238,"y":306},{"time":14263,"x":239,"y":308},{"time":14305,"x":240,"y":310},{"time":14347,"x":241,"y":311},{"time":14368,"x":241,"y":312},{"time":14389,"x":242,"y":313},{"time":14412,"x":242,"y":314},{"time":14435,"x":243,"y":315},{"time":14478,"x":244,"y":315},{"time":14499,"x":244,"y":316},{"time":14520,"x":245,"y":316},{"time":14540,"x":245,"y":317},{"time":14560,"x":246,"y":317},{"time":14600,"x":247,"y":317},{"time":14620,"x":248,"y":317},{"time":14661,"x":248,"y":318},{"time":14682,"x":249,"y":318},{"time":14727,"x":250,"y":318},{"time":14747,"x":251,"y":318},{"time":14789,"x":252,"y":318},{"time":14816,"x":253,"y":318},{"time":14837,"x":254,"y":318},{"time":14860,"x":255,"y":318},{"time":14899,"x":256,"y":318},{"time":14940,"x":257,"y":318},{"time":14960,"x":258,"y":318},{"time":14981,"x":258,"y":317},{"time":15001,"x":259,"y":317},{"time":15021,"x":260,"y":317},{"time":15042,"x":260,"y":316},{"time":15063,"x":261,"y":316},{"time":15103,"x":261,"y":315},{"time":15128,"x":262,"y":314},{"time":15166,"x":263,"y":313},{"time":15207,"x":263,"y":312},{"time":15227,"x":263,"y":311},{"time":15267,"x":263,"y":309},{"time":15309,"x":263,"y":308},{"time":15329,"x":263,"y":307},{"time":15349,"x":264,"y":306},{"time":15393,"x":264,"y":305},{"time":15413,"x":264,"y":303},{"time":15435,"x":264,"y":302},{"time":15455,"x":264,"y":301},{"time":15477,"x":264,"y":299},{"time":15497,"x":264,"y":297},{"time":15518,"x":264,"y":296},{"time":15538,"x":264,"y":294},{"time":15560,"x":264,"y":293},{"time":15580,"x":264,"y":291},{"time":15601,"x":264,"y":290},{"time":15621,"x":263,"y":289},{"time":15642,"x":263,"y":288},{"time":15664,"x":263,"y":286},{"time":15684,"x":262,"y":285},{"time":15705,"x":262,"y":283},{"time":15747,"x":262,"y":282},{"time":15767,"x":261,"y":281},{"time":15788,"x":261,"y":280},{"time":15809,"x":260,"y":278},{"time":15830,"x":259,"y":276},{"time":15850,"x":259,"y":275},{"time":15895,"x":258,"y":273},{"time":15915,"x":258,"y":272},{"time":15936,"x":258,"y":271},{"time":15959,"x":257,"y":270},{"time":15979,"x":257,"y":269},{"time":16020,"x":257,"y":268},{"time":16061,"x":256,"y":267},{"time":16125,"x":256,"y":266},{"time":16146,"x":256,"y":265},{"time":16167,"x":255,"y":265},{"time":16188,"x":255,"y":264},{"time":16229,"x":255,"y":263},{"time":16270,"x":254,"y":262},{"time":16420,"x":254,"y":261},{"time":16481,"x":253,"y":261},{"time":16501,"x":252,"y":261},{"time":16521,"x":250,"y":261},{"time":16542,"x":248,"y":261},{"time":16563,"x":247,"y":261},{"time":16629,"x":247,"y":262},{"time":16649,"x":249,"y":262},{"time":16794,"x":250,"y":262},{"time":16815,"x":251,"y":262},{"time":16836,"x":253,"y":262},{"time":16862,"x":255,"y":262},{"time":16883,"x":257,"y":262},{"time":16903,"x":259,"y":261},{"time":16929,"x":260,"y":261},{"time":16948,"x":262,"y":260},{"time":16968,"x":263,"y":260},{"time":16988,"x":264,"y":260},{"time":17011,"x":265,"y":259},{"time":17032,"x":267,"y":259},{"time":17052,"x":269,"y":258},{"time":17072,"x":270,"y":258},{"time":17094,"x":271,"y":257},{"time":17113,"x":273,"y":256},{"time":17134,"x":275,"y":256},{"time":17154,"x":278,"y":255},{"time":17177,"x":279,"y":254},{"time":17197,"x":280,"y":253},{"time":17218,"x":282,"y":253},{"time":17239,"x":283,"y":252},{"time":17262,"x":284,"y":251},{"time":17282,"x":285,"y":251},{"time":17303,"x":287,"y":250},{"time":17335,"x":288,"y":249},{"time":17354,"x":291,"y":247},{"time":17375,"x":292,"y":246},{"time":17396,"x":293,"y":246},{"time":17416,"x":294,"y":245},{"time":17437,"x":295,"y":244},{"time":17478,"x":296,"y":243},{"time":17498,"x":297,"y":241},{"time":17517,"x":298,"y":240},{"time":17537,"x":299,"y":239},{"time":17582,"x":300,"y":238},{"time":17602,"x":301,"y":237},{"time":17629,"x":302,"y":236},{"time":17648,"x":303,"y":234},{"time":17687,"x":304,"y":233},{"time":17707,"x":304,"y":232},{"time":17727,"x":305,"y":231},{"time":17747,"x":306,"y":230},{"time":17768,"x":306,"y":229},{"time":17789,"x":307,"y":228},{"time":17812,"x":308,"y":227},{"time":17833,"x":308,"y":226},{"time":17854,"x":309,"y":225},{"time":17875,"x":310,"y":223},{"time":17896,"x":311,"y":222},{"time":17917,"x":312,"y":220},{"time":17962,"x":313,"y":218},{"time":17982,"x":314,"y":216},{"time":18002,"x":315,"y":215},{"time":18022,"x":315,"y":213},{"time":18045,"x":317,"y":210},{"time":18066,"x":318,"y":209},{"time":18086,"x":318,"y":206},{"time":18107,"x":319,"y":204},{"time":18128,"x":320,"y":203},{"time":18149,"x":320,"y":201},{"time":18169,"x":320,"y":199},{"time":18194,"x":321,"y":198},{"time":18214,"x":321,"y":196},{"time":18235,"x":322,"y":194},{"time":18262,"x":323,"y":189},{"time":18281,"x":323,"y":187},{"time":18301,"x":323,"y":185},{"time":18320,"x":323,"y":184},{"time":18340,"x":323,"y":183},{"time":18363,"x":323,"y":181},{"time":18382,"x":323,"y":180},{"time":18401,"x":323,"y":179},{"time":18421,"x":323,"y":178},{"time":18445,"x":323,"y":177},{"time":18465,"x":323,"y":176},{"time":18486,"x":323,"y":175},{"time":18506,"x":323,"y":173},{"time":18531,"x":323,"y":172},{"time":18552,"x":323,"y":170},{"time":18573,"x":323,"y":169},{"time":18595,"x":323,"y":168},{"time":18615,"x":323,"y":167},{"time":18635,"x":323,"y":166},{"time":18662,"x":323,"y":164},{"time":18681,"x":323,"y":162},{"time":18701,"x":323,"y":161},{"time":18720,"x":323,"y":160},{"time":18740,"x":323,"y":158},{"time":18763,"x":323,"y":157},{"time":18784,"x":323,"y":156},{"time":18804,"x":323,"y":153},{"time":18828,"x":323,"y":152},{"time":18849,"x":323,"y":151},{"time":18869,"x":323,"y":150},{"time":18889,"x":323,"y":148},{"time":18911,"x":322,"y":147},{"time":18932,"x":322,"y":145},{"time":18953,"x":322,"y":144},{"time":18973,"x":322,"y":142},{"time":19003,"x":321,"y":140},{"time":19022,"x":321,"y":139},{"time":19044,"x":321,"y":138},{"time":19064,"x":320,"y":136},{"time":19085,"x":319,"y":134},{"time":19105,"x":319,"y":133},{"time":19128,"x":318,"y":132},{"time":19149,"x":318,"y":131},{"time":19169,"x":318,"y":130},{"time":19189,"x":316,"y":128},{"time":19211,"x":315,"y":127},{"time":19233,"x":314,"y":125},{"time":19254,"x":312,"y":124},{"time":19275,"x":309,"y":121},{"time":19295,"x":308,"y":120},{"time":19315,"x":305,"y":119},{"time":19335,"x":304,"y":118},{"time":19355,"x":303,"y":117},{"time":19377,"x":302,"y":116},{"time":19398,"x":301,"y":116},{"time":19418,"x":300,"y":115},{"time":19463,"x":299,"y":114},{"time":19483,"x":298,"y":113},{"time":19503,"x":297,"y":112},{"time":19527,"x":296,"y":111},{"time":19547,"x":295,"y":110},{"time":19567,"x":294,"y":110},{"time":19588,"x":293,"y":109},{"time":19609,"x":292,"y":108},{"time":19630,"x":291,"y":107},{"time":19671,"x":290,"y":107},{"time":19696,"x":290,"y":106},{"time":19716,"x":289,"y":105},{"time":19737,"x":288,"y":105},{"time":19759,"x":287,"y":104},{"time":19779,"x":287,"y":103},{"time":19799,"x":286,"y":103},{"time":19819,"x":285,"y":102},{"time":19839,"x":285,"y":101},{"time":19859,"x":284,"y":101},{"time":19879,"x":283,"y":100},{"time":19900,"x":282,"y":100},{"time":19920,"x":282,"y":99},{"time":19941,"x":280,"y":98},{"time":19981,"x":279,"y":97},{"time":20001,"x":277,"y":96},{"time":20022,"x":276,"y":95},{"time":20044,"x":275,"y":94},{"time":20065,"x":274,"y":94},{"time":20085,"x":273,"y":93},{"time":20105,"x":272,"y":92},{"time":20128,"x":270,"y":91},{"time":20148,"x":269,"y":90},{"time":20169,"x":268,"y":90},{"time":20193,"x":267,"y":89},{"time":20213,"x":266,"y":89},{"time":20233,"x":265,"y":88},{"time":20254,"x":264,"y":88},{"time":20275,"x":263,"y":87},{"time":20296,"x":262,"y":87},{"time":20316,"x":260,"y":86},{"time":20362,"x":259,"y":86},{"time":20382,"x":258,"y":86},{"time":20403,"x":257,"y":85},{"time":20449,"x":256,"y":85},{"time":20469,"x":255,"y":85},{"time":20488,"x":254,"y":84},{"time":20510,"x":253,"y":84},{"time":20529,"x":252,"y":84},{"time":20569,"x":251,"y":84},{"time":20611,"x":250,"y":84},{"time":20631,"x":249,"y":83},{"time":20651,"x":248,"y":83},{"time":20697,"x":247,"y":83},{"time":20717,"x":246,"y":83},{"time":20764,"x":244,"y":83},{"time":20784,"x":244,"y":82},{"time":20804,"x":243,"y":82},{"time":20831,"x":241,"y":82},{"time":20850,"x":239,"y":82},{"time":20870,"x":238,"y":82},{"time":20894,"x":237,"y":82},{"time":20935,"x":236,"y":82},{"time":20963,"x":235,"y":82},{"time":20982,"x":234,"y":82},{"time":21001,"x":233,"y":82},{"time":21021,"x":232,"y":82},{"time":21043,"x":231,"y":81},{"time":21064,"x":230,"y":81},{"time":21084,"x":229,"y":81},{"time":21130,"x":228,"y":81},{"time":21149,"x":227,"y":81},{"time":21169,"x":226,"y":81},{"time":21248,"x":225,"y":81},{"time":21477,"x":225,"y":82},{"time":21497,"x":226,"y":82},{"time":21518,"x":227,"y":83},{"time":21539,"x":228,"y":84},{"time":21563,"x":230,"y":85},{"time":21583,"x":230,"y":86},{"time":21604,"x":231,"y":86},{"time":21631,"x":232,"y":87},{"time":21651,"x":233,"y":88},{"time":21671,"x":233,"y":89},{"time":21695,"x":235,"y":90},{"time":21715,"x":236,"y":90},{"time":21735,"x":237,"y":91},{"time":21763,"x":238,"y":92},{"time":21783,"x":239,"y":93},{"time":21803,"x":240,"y":94},{"time":21831,"x":241,"y":95},{"time":21850,"x":242,"y":97},{"time":21898,"x":243,"y":98},{"time":21917,"x":244,"y":99},{"time":21937,"x":245,"y":100},{"time":21963,"x":246,"y":102},{"time":21982,"x":247,"y":103},{"time":22001,"x":248,"y":103},{"time":22021,"x":248,"y":104},{"time":22043,"x":249,"y":105},{"time":22063,"x":249,"y":106},{"time":22082,"x":250,"y":107},{"time":22102,"x":251,"y":108},{"time":22131,"x":251,"y":109},{"time":22150,"x":252,"y":110},{"time":22169,"x":252,"y":111},{"time":22197,"x":253,"y":112},{"time":22217,"x":254,"y":114},{"time":22237,"x":254,"y":115},{"time":22263,"x":255,"y":116},{"time":22283,"x":255,"y":117},{"time":22302,"x":256,"y":117},{"time":22322,"x":256,"y":118},{"time":22345,"x":256,"y":119},{"time":22365,"x":257,"y":120},{"time":22406,"x":258,"y":121},{"time":22430,"x":258,"y":122},{"time":22450,"x":258,"y":123},{"time":22497,"x":259,"y":124},{"time":22517,"x":259,"y":125},{"time":22564,"x":259,"y":126},{"time":22603,"x":260,"y":127},{"time":22628,"x":260,"y":128},{"time":22647,"x":260,"y":129},{"time":22687,"x":260,"y":130},{"time":22706,"x":260,"y":131},{"time":22751,"x":261,"y":132},{"time":22797,"x":261,"y":133},{"time":22817,"x":261,"y":134},{"time":22837,"x":261,"y":135},{"time":22884,"x":261,"y":136},{"time":22922,"x":261,"y":137},{"time":22944,"x":261,"y":138},{"time":22964,"x":261,"y":139},{"time":22984,"x":261,"y":140},{"time":23005,"x":261,"y":141},{"time":23031,"x":261,"y":142},{"time":23051,"x":261,"y":143},{"time":23096,"x":261,"y":144},{"time":23117,"x":261,"y":145},{"time":23138,"x":261,"y":146},{"time":23164,"x":261,"y":147},{"time":23202,"x":261,"y":148},{"time":23221,"x":261,"y":149},{"time":23244,"x":261,"y":150},{"time":23285,"x":261,"y":152},{"time":23305,"x":261,"y":153},{"time":23328,"x":261,"y":154},{"time":23348,"x":260,"y":155},{"time":23368,"x":260,"y":156},{"time":23395,"x":259,"y":157},{"time":23415,"x":259,"y":159},{"time":23436,"x":259,"y":160},{"time":23455,"x":258,"y":161},{"time":23478,"x":258,"y":162},{"time":23497,"x":257,"y":163},{"time":23517,"x":256,"y":164},{"time":23538,"x":256,"y":165},{"time":23564,"x":255,"y":167},{"time":23583,"x":254,"y":167},{"time":23604,"x":254,"y":168},{"time":23631,"x":253,"y":169},{"time":23650,"x":253,"y":170},{"time":23670,"x":252,"y":170},{"time":23689,"x":252,"y":171},{"time":23730,"x":251,"y":172},{"time":23749,"x":250,"y":173},{"time":23795,"x":250,"y":174},{"time":23836,"x":249,"y":175},{"time":23863,"x":249,"y":176},{"time":23883,"x":248,"y":177},{"time":23903,"x":247,"y":178},{"time":23931,"x":247,"y":180},{"time":23950,"x":246,"y":180},{"time":23969,"x":245,"y":182},{"time":23989,"x":244,"y":183},{"time":24010,"x":244,"y":184},{"time":24031,"x":243,"y":184},{"time":24051,"x":243,"y":185},{"time":24072,"x":242,"y":186},{"time":24096,"x":241,"y":187},{"time":24116,"x":241,"y":188},{"time":24137,"x":240,"y":188},{"time":24203,"x":239,"y":189},{"time":24253,"x":239,"y":190},{"time":24296,"x":238,"y":191},{"time":24335,"x":237,"y":192},{"time":24354,"x":236,"y":193},{"time":24419,"x":236,"y":194},{"time":24523,"x":235,"y":194},{"time":24543,"x":234,"y":194},{"time":24580,"x":233,"y":194},{"time":24660,"x":232,"y":194},{"time":24680,"x":231,"y":192},{"time":24700,"x":229,"y":190},{"time":24721,"x":229,"y":189},{"time":24744,"x":228,"y":188},{"time":24765,"x":227,"y":186},{"time":24785,"x":227,"y":184},{"time":24805,"x":226,"y":181},{"time":24829,"x":225,"y":179},{"time":24848,"x":224,"y":177},{"time":24867,"x":223,"y":176},{"time":24886,"x":223,"y":175},{"time":24905,"x":223,"y":174},{"time":24929,"x":223,"y":173},{"time":24948,"x":222,"y":172},{"time":24969,"x":222,"y":171},{"time":24989,"x":222,"y":170},{"time":25011,"x":221,"y":170},{"time":25032,"x":221,"y":169},{"time":25053,"x":221,"y":168},{"time":25114,"x":220,"y":167},{"time":25177,"x":220,"y":166},{"time":25197,"x":219,"y":165},{"time":25238,"x":219,"y":164},{"time":25263,"x":218,"y":163},{"time":25303,"x":218,"y":162},{"time":25328,"x":217,"y":161},{"time":25348,"x":217,"y":160},{"time":25368,"x":216,"y":159},{"time":25431,"x":215,"y":158},{"time":25472,"x":215,"y":157},{"time":25495,"x":214,"y":157},{"time":25515,"x":214,"y":156},{"time":25536,"x":213,"y":156},{"time":25581,"x":213,"y":155},{"time":25600,"x":212,"y":155},{"time":25642,"x":211,"y":154},{"time":25704,"x":210,"y":154},{"time":25746,"x":209,"y":153},{"time":25807,"x":208,"y":153},{"time":25829,"x":207,"y":153},{"time":25869,"x":206,"y":152},{"time":25916,"x":205,"y":152},{"time":25959,"x":204,"y":152},{"time":26020,"x":203,"y":152},{"time":26041,"x":202,"y":152},{"time":26102,"x":201,"y":152},{"time":26150,"x":200,"y":153},{"time":26169,"x":199,"y":154},{"time":26211,"x":199,"y":155},{"time":26251,"x":198,"y":155},{"time":26271,"x":198,"y":156},{"time":26317,"x":198,"y":157},{"time":26337,"x":197,"y":157},{"time":26364,"x":197,"y":158},{"time":26403,"x":197,"y":159},{"time":26431,"x":197,"y":161},{"time":26450,"x":197,"y":162},{"time":26471,"x":197,"y":163},{"time":26496,"x":197,"y":164},{"time":26515,"x":198,"y":166},{"time":26534,"x":198,"y":167},{"time":26553,"x":198,"y":168},{"time":26575,"x":199,"y":170},{"time":26599,"x":199,"y":172},{"time":26619,"x":200,"y":173},{"time":26639,"x":200,"y":174},{"time":26664,"x":201,"y":176},{"time":26683,"x":201,"y":177},{"time":26704,"x":201,"y":178},{"time":26731,"x":202,"y":179},{"time":26769,"x":202,"y":180},{"time":26789,"x":203,"y":181},{"time":26810,"x":203,"y":182},{"time":26852,"x":204,"y":184},{"time":26873,"x":204,"y":185},{"time":26914,"x":205,"y":186},{"time":26935,"x":205,"y":187},{"time":26977,"x":206,"y":189},{"time":26998,"x":206,"y":190},{"time":27017,"x":207,"y":191},{"time":27064,"x":208,"y":193},{"time":27103,"x":208,"y":194},{"time":27122,"x":209,"y":194},{"time":27145,"x":209,"y":195},{"time":27183,"x":209,"y":196},{"time":27251,"x":209,"y":197},{"time":27330,"x":209,"y":198},{"time":27410,"x":208,"y":199},{"time":27451,"x":207,"y":200},{"time":27500,"x":206,"y":200},{"time":27540,"x":205,"y":201},{"time":27583,"x":204,"y":201},{"time":27631,"x":203,"y":201},{"time":27649,"x":203,"y":202},{"time":27668,"x":202,"y":202},{"time":27732,"x":201,"y":202},{"time":27815,"x":200,"y":202},{"time":27835,"x":200,"y":203},{"time":27917,"x":199,"y":203},{"time":28032,"x":198,"y":203},{"time":28052,"x":198,"y":202},{"time":28072,"x":197,"y":201},{"time":28098,"x":196,"y":200},{"time":28118,"x":196,"y":199},{"time":28137,"x":195,"y":198},{"time":28164,"x":195,"y":197},{"time":28183,"x":195,"y":196},{"time":28231,"x":194,"y":194},{"time":28250,"x":194,"y":193},{"time":28270,"x":194,"y":192},{"time":28298,"x":193,"y":190},{"time":28317,"x":193,"y":189},{"time":28365,"x":193,"y":187},{"time":28384,"x":193,"y":186},{"time":28404,"x":193,"y":185},{"time":28432,"x":192,"y":183},{"time":28471,"x":192,"y":181},{"time":28495,"x":192,"y":180},{"time":28513,"x":192,"y":179},{"time":28534,"x":192,"y":178},{"time":28552,"x":191,"y":177},{"time":28571,"x":191,"y":176},{"time":28596,"x":191,"y":175},{"time":28614,"x":191,"y":174},{"time":28634,"x":190,"y":172},{"time":28652,"x":189,"y":170},{"time":28671,"x":189,"y":169},{"time":28697,"x":189,"y":167},{"time":28716,"x":189,"y":166},{"time":28737,"x":189,"y":165},{"time":28764,"x":188,"y":165},{"time":28782,"x":188,"y":164},{"time":28801,"x":187,"y":163},{"time":28821,"x":187,"y":162},{"time":28842,"x":187,"y":161},{"time":28865,"x":186,"y":161},{"time":28884,"x":186,"y":160},{"time":28903,"x":185,"y":160},{"time":28931,"x":185,"y":159},{"time":28951,"x":184,"y":158},{"time":28972,"x":184,"y":157},{"time":28998,"x":182,"y":156},{"time":29017,"x":182,"y":155},{"time":29064,"x":181,"y":155},{"time":29103,"x":180,"y":154},{"time":29122,"x":179,"y":154},{"time":29145,"x":178,"y":154},{"time":29232,"x":177,"y":154},{"time":29252,"x":176,"y":154},{"time":29300,"x":176,"y":155},{"time":29320,"x":175,"y":155},{"time":29342,"x":174,"y":155},{"time":29383,"x":174,"y":156},{"time":29431,"x":173,"y":156},{"time":29450,"x":172,"y":157},{"time":29469,"x":172,"y":158},{"time":29489,"x":171,"y":158},{"time":29534,"x":171,"y":159},{"time":29555,"x":170,"y":159},{"time":29578,"x":170,"y":161},{"time":29599,"x":170,"y":162},{"time":29619,"x":169,"y":163},{"time":29640,"x":169,"y":164},{"time":29666,"x":169,"y":165},{"time":29706,"x":169,"y":166},{"time":29732,"x":169,"y":167},{"time":29751,"x":169,"y":168},{"time":29797,"x":169,"y":169},{"time":29817,"x":169,"y":170},{"time":29837,"x":169,"y":171},{"time":29863,"x":169,"y":172},{"time":29883,"x":170,"y":174},{"time":29903,"x":170,"y":175},{"time":29922,"x":170,"y":176},{"time":29944,"x":171,"y":177},{"time":29963,"x":171,"y":178},{"time":29983,"x":171,"y":179},{"time":30003,"x":171,"y":180},{"time":30022,"x":172,"y":182},{"time":30045,"x":173,"y":183},{"time":30065,"x":173,"y":185},{"time":30086,"x":173,"y":186},{"time":30105,"x":173,"y":187},{"time":30130,"x":174,"y":188},{"time":30171,"x":174,"y":189},{"time":30198,"x":175,"y":190},{"time":30218,"x":175,"y":191},{"time":30262,"x":175,"y":193},{"time":30282,"x":176,"y":194},{"time":30329,"x":176,"y":195},{"time":30396,"x":176,"y":196},{"time":30415,"x":177,"y":197},{"time":30435,"x":177,"y":198},{"time":30454,"x":177,"y":199},{"time":30538,"x":177,"y":200},{"time":30583,"x":177,"y":201},{"time":30632,"x":178,"y":202},{"time":30699,"x":178,"y":203},{"time":30766,"x":178,"y":205},{"time":30971,"x":178,"y":206},{"time":31013,"x":177,"y":206},{"time":31051,"x":177,"y":207},{"time":31070,"x":176,"y":207},{"time":31089,"x":175,"y":207},{"time":31163,"x":174,"y":208},{"time":31203,"x":173,"y":208},{"time":31249,"x":172,"y":208},{"time":31269,"x":171,"y":208},{"time":31313,"x":170,"y":208},{"time":31354,"x":169,"y":208},{"time":31570,"x":169,"y":206},{"time":31589,"x":169,"y":202},{"time":31611,"x":169,"y":200},{"time":31632,"x":169,"y":199},{"time":31651,"x":169,"y":198},{"time":31670,"x":169,"y":197},{"time":31713,"x":169,"y":196},{"time":31735,"x":169,"y":195},{"time":31755,"x":169,"y":194},{"time":31778,"x":169,"y":193},{"time":31799,"x":169,"y":192},{"time":31840,"x":169,"y":191},{"time":31865,"x":169,"y":190},{"time":31885,"x":169,"y":189},{"time":31932,"x":168,"y":188},{"time":31972,"x":168,"y":187},{"time":31999,"x":168,"y":186},{"time":32019,"x":168,"y":185},{"time":32039,"x":168,"y":184},{"time":32065,"x":167,"y":183},{"time":32084,"x":167,"y":182},{"time":32104,"x":167,"y":181},{"time":32132,"x":167,"y":180},{"time":32151,"x":167,"y":179},{"time":32188,"x":167,"y":178},{"time":32232,"x":167,"y":177},{"time":32270,"x":167,"y":176},{"time":32289,"x":167,"y":175},{"time":32311,"x":166,"y":175},{"time":32331,"x":166,"y":174},{"time":32350,"x":166,"y":173},{"time":32369,"x":166,"y":172},{"time":32415,"x":166,"y":171},{"time":32465,"x":166,"y":170},{"time":32484,"x":165,"y":169},{"time":32537,"x":165,"y":168},{"time":32565,"x":165,"y":167},{"time":32585,"x":164,"y":167},{"time":32652,"x":164,"y":166},{"time":32714,"x":164,"y":165},{"time":32733,"x":163,"y":165},{"time":32800,"x":163,"y":164},{"time":32819,"x":162,"y":164},{"time":32837,"x":162,"y":163},{"time":32883,"x":161,"y":163},{"time":32901,"x":161,"y":162},{"time":32983,"x":160,"y":162},{"time":33032,"x":159,"y":162},{"time":33053,"x":159,"y":161},{"time":33100,"x":158,"y":161},{"time":33166,"x":157,"y":161},{"time":33205,"x":156,"y":161},{"time":33233,"x":155,"y":161},{"time":33272,"x":154,"y":161},{"time":33318,"x":153,"y":161},{"time":33354,"x":152,"y":161},{"time":33417,"x":151,"y":162},{"time":33465,"x":150,"y":162},{"time":33542,"x":150,"y":163},{"time":33571,"x":149,"y":163},{"time":33611,"x":149,"y":164},{"time":33699,"x":148,"y":164},{"time":33718,"x":148,"y":165},{"time":33784,"x":148,"y":166},{"time":33831,"x":147,"y":167},{"time":33898,"x":147,"y":168},{"time":33965,"x":147,"y":169},{"time":34004,"x":147,"y":170},{"time":34030,"x":146,"y":170},{"time":34049,"x":146,"y":171},{"time":34109,"x":146,"y":172},{"time":34168,"x":146,"y":173},{"time":34234,"x":146,"y":174},{"time":34275,"x":146,"y":175},{"time":34317,"x":146,"y":176},{"time":34363,"x":146,"y":177},{"time":34447,"x":146,"y":178},{"time":34488,"x":147,"y":179},{"time":34551,"x":147,"y":180},{"time":34596,"x":147,"y":181},{"time":34635,"x":147,"y":182},{"time":34676,"x":147,"y":183},{"time":34696,"x":147,"y":184},{"time":34737,"x":148,"y":185},{"time":34762,"x":148,"y":186},{"time":34800,"x":148,"y":187},{"time":34841,"x":148,"y":188},{"time":34883,"x":148,"y":189},{"time":34929,"x":148,"y":190},{"time":34949,"x":148,"y":191},{"time":34988,"x":149,"y":191},{"time":35010,"x":149,"y":192},{"time":35052,"x":149,"y":193},{"time":35114,"x":149,"y":194},{"time":35217,"x":149,"y":195},{"time":35266,"x":149,"y":196},{"time":35378,"x":149,"y":197},{"time":35401,"x":150,"y":198},{"time":35448,"x":150,"y":199},{"time":35515,"x":150,"y":200},{"time":35601,"x":150,"y":201},{"time":35681,"x":150,"y":202},{"time":35753,"x":150,"y":203},{"time":35820,"x":150,"y":204},{"time":35882,"x":150,"y":205},{"time":35998,"x":150,"y":206},{"time":36045,"x":150,"y":207},{"time":36107,"x":150,"y":208},{"time":36195,"x":150,"y":209},{"time":36262,"x":150,"y":210},{"time":36329,"x":150,"y":211},{"time":36401,"x":150,"y":212},{"time":36522,"x":150,"y":213},{"time":36663,"x":150,"y":214},{"time":36830,"x":150,"y":215},{"time":36962,"x":150,"y":216},{"time":36984,"x":149,"y":216},{"time":37005,"x":149,"y":217},{"time":37413,"x":149,"y":216},{"time":37432,"x":148,"y":215},{"time":37451,"x":147,"y":215}],"time":1583,"type":"draw","col":16777010}]';
//
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;
}
}