BabyRhythm.m 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // BabyBeats.m
  3. // BabyBluetoothAppDemo
  4. //
  5. // Created by ZTELiuyw on 15/9/15.
  6. // Copyright (c) 2015年 刘彦玮. All rights reserved.
  7. //
  8. #import "BabyRhythm.h"
  9. #import "BabyDefine.h"
  10. @implementation BabyRhythm {
  11. BOOL isOver;
  12. BBBeatsBreakBlock blockOnBeatBreak;
  13. BBBeatsOverBlock blockOnBeatOver;
  14. }
  15. - (instancetype)init {
  16. self = [super init];
  17. if (self) {
  18. //beatsInterval
  19. _beatsInterval = KBABYRHYTHM_BEATS_DEFAULT_INTERVAL;
  20. }
  21. return self;
  22. }
  23. - (void)beats {
  24. if (isOver) {
  25. BabyLog(@">>>beats isOver");
  26. return;
  27. }
  28. BabyLog(@">>>beats at :%@",[NSDate date]);
  29. if (self.beatsTimer) {
  30. [self.beatsTimer setFireDate: [[NSDate date]dateByAddingTimeInterval:self.beatsInterval]];
  31. }
  32. else {
  33. self.beatsTimer = [NSTimer timerWithTimeInterval:self.beatsInterval target:self selector:@selector(beatsBreak) userInfo:nil repeats:YES];
  34. [self.beatsTimer setFireDate: [[NSDate date]dateByAddingTimeInterval:self.beatsInterval]];
  35. [[NSRunLoop currentRunLoop] addTimer:self.beatsTimer forMode:NSRunLoopCommonModes];
  36. }
  37. }
  38. - (void)beatsBreak {
  39. BabyLog(@">>>beatsBreak :%@",[NSDate date]);
  40. [self.beatsTimer setFireDate:[NSDate distantFuture]];
  41. if (blockOnBeatBreak) {
  42. blockOnBeatBreak(self);
  43. }
  44. }
  45. - (void)beatsOver {
  46. BabyLog(@">>>beatsOver :%@",[NSDate date]);
  47. [self.beatsTimer setFireDate:[NSDate distantFuture]];
  48. isOver = YES;
  49. if (blockOnBeatOver) {
  50. blockOnBeatOver(self);
  51. }
  52. }
  53. - (void)beatsRestart {
  54. BabyLog(@">>>beatsRestart :%@",[NSDate date]);
  55. isOver = NO;
  56. [self beats];
  57. }
  58. - (void)setBlockOnBeatsBreak:(void(^)(BabyRhythm *bry))block {
  59. blockOnBeatBreak = block;
  60. }
  61. - (void)setBlockOnBeatsOver:(void(^)(BabyRhythm *bry))block {
  62. blockOnBeatOver = block;
  63. }
  64. @end