首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用两个NSTimer

使用两个NSTimer
EN

Stack Overflow用户
提问于 2011-12-07 05:31:54
回答 2查看 491关注 0票数 1

我正在开发一款可以将文本转换成摩尔斯电码,然后用iPhone的手电筒闪现出来的应用程序。我使用字符串替换将NSString的内容转换为摩尔斯电码。我找到了一个脚本,可以用NSTimer打开和关闭iPhone的手电筒,间隔时间可调。但我不知道如何添加两个不同的间隔,一个是摩尔斯“。一个是摩尔斯字母"-“。有谁可以帮我?

代码语言:javascript
运行
复制
- (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];
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-07 05:47:13

只需使用一个定时器,即可根据点、破折号或间隔设置时间间隔。表示"A“,它是点空间破折号

  • 打开灯并将计时器设置为点间隔。
  • 当计时器触发时,将灯关闭并将计时器设置为间隔。
  • 当计时器触发时,打开灯并将计时器设置为短划线间隔。
  • 当计时器触发时,关闭灯。
票数 2
EN

Stack Overflow用户

发布于 2011-12-07 07:52:58

使用无数的定时器。全是单发模式。想要一个短电话来闪现短电话。然后在计时器回调中,为下一个破折号或点创建另一个计时器。当阵列中没有更多要传输的信号时,就完成了。代码是近似值...

代码语言:javascript
运行
复制
 - (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中的计时器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8407142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档