root/as3/Utils/src/org/libspark/utils/media/BeatTimer.as

リビジョン 707, 1.0 kB (コミッタ: yossy, コミット時期: 4 年 前)

BeatTimer

Line 
1 package org.libspark.utils.media
2 {
3         import flash.utils.getTimer;
4        
5         public class BeatTimer
6         {
7                 public function BeatTimer()
8                 {
9                 }
10                
11                 private var _bpm:Number;
12                 private var _startTime:uint;
13                 private var _beatPosition:Number;
14                 private var _phase:Number;
15                 private var _isOnBeat:Boolean = false;
16                
17                 public function get bpm():Number
18                 {
19                         return _bpm;
20                 }
21                
22                 public function get beatPosition():Number
23                 {
24                         return _beatPosition;
25                 }
26                
27                 public function get phase():Number
28                 {
29                         return _phase;
30                 }
31                
32                 public function get isOnBeat():Boolean
33                 {
34                         return _isOnBeat;
35                 }
36                
37                 public function start(bpm:Number):void
38                 {
39                         _bpm = bpm;
40                         _startTime = getTimer();
41                         update();
42                 }
43                
44                 public function update():void
45                 {
46                         var currentTime:uint = getTimer();
47                         var beatInterval:Number = (60 * 1000) / _bpm;
48                         var oldPosition:Number = _beatPosition;
49                        
50                         _beatPosition = (currentTime - _startTime) / beatInterval;
51                         _phase = _beatPosition - int(_beatPosition);
52                         _isOnBeat = int(oldPosition) != int(_beatPosition);
53                 }
54         }
55 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。