2016-12-03 2 views
1

ボタンをタップすると、次のコードを使用して簡単なクリック音が鳴ります。音の最初のインスタンスが遅れます

import AudioToolbox 

private var clickSound: SystemSoundID! 

func createSound(soundName: String) -> SystemSoundID { 
    var id: SystemSoundID = 0 

    let url = CFBundleCopyResourceURL(CFBundleGetMainBundle(), soundName, "wav", nil) 
    AudioServicesCreateSystemSoundID(url, &id) 

    return id 
} 

    //Load click sound. 
    clickSound = createSound("ButtonClick") 

これは機能しますが、初めてボタンをタップすると、音が少し遅れます。その後のすべてのボタンタップは、サウンドがすぐに再生される結果になります。それは私が最初に演奏されるまでサウンドがロードされていないと信じさせてくれます。

この遅延を取り除く方法はありますか?

+0

アプリで再生する必要があるサウンドの数はいくつですか? –

答えて

2

これは既知の問題です。

起動時に小さなサイレントサウンドバイトを再生できます。こうすることで、サウンドルーチンがロードされ、実行する準備が整います。

AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SILENCE" ofType:@"WAV"]], &alarm); 
AudioServicesPlaySystemSound (alarm); 
+0

ありがとうございます。それはまさに私がやったことです、そして、それは完全に動作します。 –

関連する問題