2009-11-25 57 views
0

我正在創建一個應用程序,在我的應用程序中,我正在更改倒計時圖像。我想在一秒鐘完成時發出滴答聲(我的意思是圖像變化時)。我有25秒長的聲音,時間間隔1秒。有時它工作正常,但有時它不是。現在我如何同步音頻與我的timer.any幫助讚賞謝謝。與NStimer iphone sdk同步聲音?

回答

0

25個刻度的記錄?)爲什麼不使用一個刻度的記錄?如果響度不是您的目標,您可以使用AudioServicesCreateSystemSoundID播放,然後每秒撥打AudioServicesPlaySystemSound

+0

你可以給我一個一秒鐘的聲音。但在我的iPhone iPhone 3GS我無法聽到系統sound.I已經嘗試過系統聲音。 – 2009-11-25 09:08:24

+0

嗯..你可以用你的音頻文件的一部分,例如,Audion。它免費且易於使用。關於systemsound ...你可以使用OpenAL。也許它不是非常友好,但工作正常。它使用低級別的API,因此我更喜歡將它與動畫一起使用。這裏有一篇文章可以幫助你創建一些簡單的封面來使用openAL播放聲音http://benbritten.com/2008/11/06/openal-sound-on-the-iphone/comment-page-1/#comment- 292 – Morion 2009-11-25 09:50:19

+0

我認爲使用openAL變得非常複雜,我更願意使用avaudioplayer(我目前正在使用avaudioplayer)。剪切聲音的一部分也需要精確。沒有任何可用的免費嘀嗒聲 – 2009-11-25 09:55:07

0

我建議使用AudioServicesCreateSystemSoundID一個聲音文件,這只是一個滴答聲,這是第二長或更低,並在你的init使用此約1/16:

clickSound = [[self createSoundWithName:@"click"] intValue]; 

這裏是代碼建立了聲:

- (NSNumber*) createSoundWithName: (NSString*) name { 
SystemSoundID soundID = -1; 

NSString *path =[[NSBundle mainBundle] pathForResource:name ofType:@"caf"]; 
if (path != nil) { 
    NSURL *url = [NSURL fileURLWithPath:path]; 
    if (url != nil) { 
     OSStatus err = AudioServicesCreateSystemSoundID ((CFURLRef) url, &soundID); 
     if (err) NSLog (@"AudioServicesCreateSystemSoundID error %d", err); 
    } 
} 
return [NSNumber numberWithInt:soundID]; 
} 

,這裏是你玩點擊:

- (void) playClick { 
AudioServicesPlaySystemSound (clickSound); 
}