Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var bpm:Number = 172.0;
- var startBar:int = 3;
- var endBar:int = 185;
- var secondsPerBar:Number = 240.0 / bpm;
- var speed:Number = secondsPerBar;
- var beatTime:Number = secondsPerBar / 8.0;
- var arrows:Array = [];
- var currentBar:int;
- var currentBeat:int;
- var data:Vector.<int> = new <int>[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,4,4,4,0,8,4,4,0,4,4,4,0,8,4,4,0,4,4,4,0,8,4,4,0,4,4,4,0,8,4,4,0,4,4,4,0,8,4,4,0,4,4,4,0,8,4,4,0,4,4,4,0,8,4,4,8,0,0,0,0,2,1,0,0,4,4,4,0,8,4,4,0,5,4,4,0,8,4,4,0,5,4,4,0,8,4,4,0,5,4,4,0,8,4,4,0,5,4,4,0,8,4,4,0,5,4,4,0,8,4,4,0,5,4,4,0,8,4,4,8,0,0,0,0,2,0,0,0,4,0,4,0,8,0,0,4,0,8,4,0,8,4,0,0,4,0,4,0,8,0,0,4,0,8,4,0,8,4,0,0,4,0,4,0,8,0,0,4,0,8,4,0,8,4,0,0,4,0,4,0,8,0,8,4,0,8,4,0,8,0,8,8,4,0,4,0,8,0,0,4,0,8,4,0,8,4,0,0,4,0,4,0,8,0,8,4,0,8,4,0,8,4,0,0,4,0,4,0,8,0,0,4,0,8,4,0,8,4,0,0,4,0,4,0,8,0,8,4,0,8,4,0,2,1,2,0,4,4,8,4,0,4,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,4,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,8,0,4,8,0,8,4,4,8,4,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,12,0,0,0,8,4,4,0,4,0,8,0,8,4,0,8,4,0,8,0,9,9,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,8,8,4,8,4,8,0,4,0,12,0,4,0,12,0,4,0,12,0,4,0,12,0,4,0,12,0,4,0,12,0,4,0,12,0,2,1,4,8,4,0,4,0,8,0,0,4,0,8,4,0,8,4,4,4,4,0,4,0,8,0,0,4,0,8,4,0,8,0,4,0,4,0,4,0,8,0,0,4,0,8,4,0,8,4,4,4,4,0,4,0,8,8,8,8,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,2,0,0,0,0,0,0,0,8,1,2,1,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,2,0,1,4,4,8,4,0,4,8,4,0,0,8,0,0,0,4,4,4,4,8,0,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,4,4,8,4,0,2,1,2,4,4,8,4,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,12,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,8,0,0,0,8,0,4,0,4,0,8,0,8,4,0,8,4,0,9,9,9,9,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,2,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,0,8,4,4,0,8,0,4,2,2,4,2,4,2,0,4,0,12,0,4,0,12,0,4,0,5,0,4,0,5,0,4,0,0,0,4,0,12,0,4,0,12,0,2,1,2,0,4,0,4,0,8,0,0,4,0,8,4,0,8,4,4,4,4,0,4,0,8,0,0,4,0,8,4,0,8,4,4,4,4,0,4,0,8,0,0,4,0,8,4,0,8,4,4,4,4,0,4,0,8,8,8,4,0,8,4,0,8,0,8,0,4,0,4,0,8,4,0,4,0,0,0,0,8,4,4,4,4,0,4,0,8,4,0,4,0,0,0,0,2,1,0,0,4,0,4,0,8,4,0,4,0,0,0,0,0,0,0,0,4,0,4,0,8,4,0,4,0,0,0,0,0,0,0,0,4,0,4,0,8,4,0,4,0,0,0,0,2,1,0,0,4,0,4,0,8,4,0,4,0,0,4,0,4,0,4,0,4,0,4,0,8,4,0,4,0,0,0,0,0,0,0,0,4,0,4,0,8,4,0,4,0,2,1,2,1,2,1,2,4,0,8,0,0,0,8,0,4,0,8,0,0,0,8,4,4,0,8,0,0,0,8,4,0,0,8,0,0,0,8,4,4,0,8,0,0,0,8,4,0,4,8,0,0,0,8,4,4,0,8,0,0,0,8,4,0,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,0,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,4,4,8,4,4,4,8,4,4,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,4,4,8,0,0,0,8,4,4,4,8,4,4,4,8,4,4,4,8,4,4,4,2,4,4,4,1,4,4,4,8,4,4,4,2,4,4,4,1,4,4,4,8,4,4,4,2,4,4,4,1,4,4,4,8,4,4,4,8,4,8,4,8,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,8,4,0,4,8,4,0,4,8,4,4,4,8,4,0,4,8,4,0,4,8,4,0,4,8,4,4,4,8,4,0,4,8,4,0,4,8,4,4,4,8,4,0,4,8,4,0,4,8,4,0,4,8,4,0,4,8,4,4,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,9,9,9,9,9,9,9,9,4,1,4,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,1,12,1,4,0,4,0,8,4,0,4];
- var frameKeys:Array = [];
- var startTime:int;
- var music:Sound = new Music();
- var musicChannel:SoundChannel = music.play();
- musicChannel.stop();
- function enterFrameHandler(event:Event):void
- {
- var now:int = getTimer();
- trace(startTime);
- var time:Number = (now - startTime) / 1000;
- trace(now);
- currentBar = time / secondsPerBar;
- var barTime:Number = time % secondsPerBar;
- var beat:int = barTime / beatTime;
- measure_tf.text = "Bar : " + currentBar + "\nBeat : " + beat;
- var n:int = arrows.length;
- for (var i:int = n - 1; i > -1; i--)
- {
- var arrow:MovieClip = arrows[i];
- if (frameKeys[arrow.currentFrame] && arrow.hitTestObject(targetLine))
- {
- removeChild(arrow);
- arrows.splice(i, 1);
- continue;
- }
- arrow.y = (time - arrow.time) / speed * 500;
- if (arrow.y >= 600)
- {
- removeChild(arrow);
- arrows.splice(i, 1);
- }
- }
- frameKeys.length = 0;
- currentBeat = beat;
- var position:int = currentBar * 8 + currentBeat;
- if (position >= data.length)
- return;
- var bits:int = data[position];
- if (!bits)
- return;
- for (var shift:int = 0; shift < 4; shift++)
- {
- if (!(bits & 1 << shift))
- continue;
- arrow = new Arrow();
- arrow.time = position * beatTime;
- arrow.gotoAndStop(shift + 1);
- arrow.x = 225 + (arrow.currentFrame - 1) * 50;
- arrow.y = (time - arrow.time) / speed * 500;
- addChild(arrow);
- arrows.push(arrow);
- }
- }
- function keyDownHandler(event:KeyboardEvent):void
- {
- switch (event.keyCode)
- {
- case Keyboard.LEFT:
- {
- frameKeys[1] = true;
- break;
- }
- case Keyboard.UP:
- {
- frameKeys[2] = true;
- break;
- }
- case Keyboard.DOWN:
- {
- frameKeys[3] = true;
- break;
- }
- case Keyboard.RIGHT:
- {
- frameKeys[4] = true;
- break;
- }
- }
- event.updateAfterEvent();
- }
- function recordEnterFrameHandler(event:Event):void
- {
- var now:int = getTimer();
- var time:Number = (now - startTime) / 1000;
- currentBar = time / secondsPerBar;
- var barTime:Number = time % secondsPerBar;
- currentBeat = barTime / beatTime;
- measure_tf.text = "Bar : " + currentBar + "\nBeat : " + currentBeat;
- }
- function recordKeyDownHandler(event:KeyboardEvent):void
- {
- var position:int = (currentBar - 1) * 8 + currentBeat + 1;
- if (position < 0)
- return;
- data.length = position + 1;
- switch (event.keyCode)
- {
- case Keyboard.LEFT:
- {
- data[position] |= 1;
- break;
- }
- case Keyboard.UP:
- {
- data[position] |= 2;
- break;
- }
- case Keyboard.DOWN:
- {
- data[position] |= 4;
- break;
- }
- case Keyboard.RIGHT:
- {
- data[position] |= 8;
- break;
- }
- }
- event.updateAfterEvent();
- }
- function startPlay(event:Event = null):void
- {
- trace("[" + data + "]");
- //data_tf.text = "[" + data + "]";
- removeEventListener(Event.ENTER_FRAME, recordEnterFrameHandler);
- stage.removeEventListener(KeyboardEvent.KEY_DOWN, recordKeyDownHandler, false);
- addEventListener(Event.ENTER_FRAME, enterFrameHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false);
- frameKeys = [];
- if (musicChannel)
- musicChannel.stop();
- startTime = getTimer();
- musicChannel = music.play();
- musicChannel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
- }
- function startRecord(event:Event = null):void
- {
- var n:int = arrows.length;
- for (var i:int = 0; i < n; i++)
- {
- removeChild(arrows[i]);
- }
- arrows.length = 0;
- removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
- stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false);
- addEventListener(Event.ENTER_FRAME, recordEnterFrameHandler);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, recordKeyDownHandler, false);
- data.length = 0;
- if (musicChannel)
- musicChannel.stop();
- startTime = getTimer();
- musicChannel = music.play();
- musicChannel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
- }
- function soundCompleteHandler(event:Event):void
- {
- removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
- stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false);
- removeEventListener(Event.ENTER_FRAME, recordEnterFrameHandler);
- stage.removeEventListener(KeyboardEvent.KEY_DOWN, recordKeyDownHandler, false);
- }
- recordButton.addEventListener(MouseEvent.CLICK, startRecord);
- playButton.addEventListener(MouseEvent.CLICK, startPlay);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement