You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.8 KiB
77 lines
1.8 KiB
// |
|
// BabyBeats.m |
|
// BabyBluetoothAppDemo |
|
// |
|
// Created by ZTELiuyw on 15/9/15. |
|
// Copyright (c) 2015年 刘彦玮. All rights reserved. |
|
// |
|
|
|
#import "BabyRhythm.h" |
|
#import "BabyDefine.h" |
|
|
|
@implementation BabyRhythm { |
|
BOOL isOver; |
|
BBBeatsBreakBlock blockOnBeatBreak; |
|
BBBeatsOverBlock blockOnBeatOver; |
|
} |
|
|
|
- (instancetype)init { |
|
self = [super init]; |
|
if (self) { |
|
//beatsInterval |
|
_beatsInterval = KBABYRHYTHM_BEATS_DEFAULT_INTERVAL; |
|
} |
|
return self; |
|
} |
|
|
|
- (void)beats { |
|
|
|
if (isOver) { |
|
BabyLog(@">>>beats isOver"); |
|
return; |
|
} |
|
|
|
BabyLog(@">>>beats at :%@",[NSDate date]); |
|
if (self.beatsTimer) { |
|
[self.beatsTimer setFireDate: [[NSDate date]dateByAddingTimeInterval:self.beatsInterval]]; |
|
} |
|
else { |
|
self.beatsTimer = [NSTimer timerWithTimeInterval:self.beatsInterval target:self selector:@selector(beatsBreak) userInfo:nil repeats:YES]; |
|
[self.beatsTimer setFireDate: [[NSDate date]dateByAddingTimeInterval:self.beatsInterval]]; |
|
[[NSRunLoop currentRunLoop] addTimer:self.beatsTimer forMode:NSRunLoopCommonModes]; |
|
} |
|
} |
|
|
|
- (void)beatsBreak { |
|
BabyLog(@">>>beatsBreak :%@",[NSDate date]); |
|
[self.beatsTimer setFireDate:[NSDate distantFuture]]; |
|
if (blockOnBeatBreak) { |
|
blockOnBeatBreak(self); |
|
} |
|
} |
|
|
|
- (void)beatsOver { |
|
BabyLog(@">>>beatsOver :%@",[NSDate date]); |
|
[self.beatsTimer setFireDate:[NSDate distantFuture]]; |
|
isOver = YES; |
|
if (blockOnBeatOver) { |
|
blockOnBeatOver(self); |
|
} |
|
|
|
} |
|
|
|
- (void)beatsRestart { |
|
BabyLog(@">>>beatsRestart :%@",[NSDate date]); |
|
isOver = NO; |
|
[self beats]; |
|
} |
|
|
|
- (void)setBlockOnBeatsBreak:(void(^)(BabyRhythm *bry))block { |
|
blockOnBeatBreak = block; |
|
} |
|
|
|
- (void)setBlockOnBeatsOver:(void(^)(BabyRhythm *bry))block { |
|
blockOnBeatOver = block; |
|
} |
|
|
|
@end
|
|
|