Actionscript Code:
package
{
import flash.display.MovieClip;
import flash.display.Shader;
import flash.display.Shape;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Metronome extends MovieClip
{
private var timer:Timer;
private var beatsPerMinute:Number;
private var timerDelay:Number;
private var beatAppear:Boolean;
private var beat:Shape;
public function Metronome()
{
//draw up a circle that flashes every timer event
drawBeat();
beat.x = 200;
beat.y = 200;
beatAppear = false;
//in a metronome, 60 means 60 beats per minute
//so 60 beats last 60000 ms
//so 1 beat lasts 1000ms
//Similarly, x means x beats per minute
//so x beats last 60000 ms
//so 1 beat relatively to x will last 60000 / x
//hence timerDelay is (60000 / x) / 2 because you want the beat to flash
//I don't think I make sense here
//which is (60000/beatsPerMinute) / 2
//for this example, I'm going to use 120 for beatsPerMinute
beatsPerMinute = 120;
timerDelay = (60000 / beatsPerMinute) / 2;
timer = new Timer(timerDelay);
timer.addEventListener(TimerEvent.TIMER, startBeat);
timer.start();
}
private function startBeat(e:TimerEvent):void
{
if (beatAppear == false)
{
beatAppear = true;
addChild(beat);
}
else
{
beatAppear = false;
removeChild(beat);
}
}
private function drawBeat():void
{
beat = new Shape();
//gray
beat.graphics.beginFill(0xCCCCCC);
beat.graphics.drawCircle(0, 0, 40);
beat.graphics.endFill();
}
}
}