我想知道什麼是最好的方式來實現一個莫爾斯電碼發生器。它的工作方式是用戶鍵入一個單詞或短語,然後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