使用两个NSTimer

时间:2011-12-06 21:31:54

标签: objective-c xcode cocoa nstimer

我正在创建这个应用程序,将文本转换为摩尔斯电码,然后使用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];
}
}

2 个答案:

答案 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中不需要计时器。