我正在创建这个应用程序,将文本转换为摩尔斯电码,然后使用iPhone的手电筒将其闪现。我已经使用字符串替换将NSString的内容转换为摩尔斯电码。我找到了一个脚本,可以打开和关闭iPhone的手电筒,使用NSTimer可调节间隔。但我无法弄清楚如何添加两个不同的间隔,一个用于莫尔斯“。”和一个莫尔斯“ - ”。任何人都可以帮助我吗?
- (void)viewDidLoad {
[super viewDidLoad];
int spaceTime;
spaceTime = 1;
int flashTimePrik;
flashTimePrik = 5;
strobeIsOn = NO;
strobeActivated = NO;
strobeFlashOn = NO;
flashController = [[FlashController alloc] init];
self.strobeTimer = [
NSTimer
scheduledTimerWithTimeInterval:spaceTime
target:self
selector:@selector(strobeTimerCallback:)
userInfo:nil
repeats:YES
];
self.strobeFlashTimer = [
NSTimer scheduledTimerWithTimeInterval:flashTimePrik
target:self
selector:@selector(strobeFlashTimerCallback:)
userInfo:nil
repeats:YES
];
}
- (void)strobeTimerCallback:(id)sender {
if (strobeActivated) {
strobeIsOn = !strobeIsOn;
strobeFlashOn = YES;
} else {
strobeFlashOn = NO;
}
}
- (void)strobeFlashTimerCallback:(id)sender {
if (strobeFlashOn) {
strobeFlashOn = !strobeFlashOn;
[self startStopStrobe:strobeIsOn];
} else {
[self startStopStrobe:NO];
}
}
答案 0 :(得分:2)
只需使用一个计时器,根据点,短划线或空格间隔设置时间间隔。对于“点”空间划线的“A”
答案 1 :(得分:0)
使用bajillion计时器。所有单火模式。想要短暂的通话短信。然后在计时器回调中,为下一个破折号或点创建另一个计时器。当数组中没有更多信号要传输时,就完成了。代码是近似的......
- (void)lightTimerOffCallback:(id)sender {
turnLIGHTOFF
[NSTimer scheduledTimer:intervalbeforeStartingNextChar... selector(@startNextDotOrFlash) repeat NO]
}
- (void)startNextDotOrFlash:(id)sender {
if (there is a new dot or dash to do)
intervalToLeaveThisLightOn = 1.0 : 0.1 ? isDot;
turnLIGHTON
[NSTimer scheduledTimer:intervalToLeaveThisLightOn... selector(@lightTimerOffCallback) repeat NO]
}
在iVar中不需要计时器。