我想知道什么是最好的方式来实现一个莫尔斯电码发生器。它的工作方式是用户键入一个单词或短语,然后NSString将作为参数传递给我的方法进行处理。我想要处理的方式是循环播放字符串中的每个字符,然后在播放时播放正确的音调序列。我已经在一个单独的类中实现了该机制。我怎样才能实现一个莫尔斯电码发生器?
我已经尝试了很多不同的方法,但它们似乎都引入了某种问题。我迄今尝试过的事情是:使用延迟方法调用(performSelector:withObject:afterDelay)创建一个NS Timer。
下面是我用来延迟的方法的一个例子,但问题是,如果用户输入“aaaa”,只会播放第一个“a”,因为整个循环将在莫尔斯序列甚至完成了生成。如果循环可以在继续之前等待开关盒完成,那将会更理想。
反正这是我认为它应该实现的方式,但它似乎并没有工作,所以也许有更好的方式来实现莫尔斯电码生成器或我只是错过了一个步骤,如果有人可以请帮助我解决这个问题,我真的很感激它。
- (NSString *)convertTextToMorse:(NSString *)phrase {
for (int i = 0; i < [phrase length]; i++) {
unichar ch;
ch = [phrase characterAtIndex:i];
NSLog(@"Processing charachter %c",ch);
//Dot = 100ms
//Dash = 300ms
//Pause = 200ms
switch (ch) {
case 'a':
//Morse "a"
[self playDotSound];
[self performSelector:@selector(playDashSound) withObject:nil afterDelay:0.2];
break;
case 'b':
//Morse "b"
break;
default:
break;
}
}
return phrase;
}
WOW !!!!我只能说,你是我的英雄哈哈。它完美的工作,非常感谢 – cgossain 2010-10-31 17:06:05
如果答案适合你,请点击对号 – 2010-11-01 18:03:44