2010-06-12 4 views
0

내 게임에 사용할 사운드를 몇 개 만들었습니다. 문제없이 특정 이벤트에서 게임을 할 수 있습니다.AudioToolKit을 사용한 간단한 사운드 효과 루프

// create sounds 
CFBundleRef mainBundle; 
mainBundle = CFBundleGetMainBundle(); 

_soundFileShake = CFBundleCopyResourceURL(mainBundle, CFSTR("shake"), CFSTR("wav"), NULL); 
AudioServicesCreateSystemSoundID(_soundFileShake, &_soundIdShake); 

// later... 
AudioServicesPlaySystemSound(_soundIdShake); 

게임에는 장치를 흔들어서 일부 기능을 활성화 할 수있는 메커니즘이 있습니다. 나는 떨리는 코드를 끝내고 내 게임에 "떨리는 시작"과 "떨리는 끝"메시지를 받게됩니다. 내가해야 할 일은 떨림이 시작되면 "shave.wav"를 시작하고 멈출 때까지 반복하는 것입니다. AudioToolbox/AudioServices를 사용하여이 작업을 수행 할 수 있습니까? 그렇지 않으면 내가 어떻게 할 수 있니?

답변

2

"흔들림"상태를 추적하고 시스템 사운드 완료를위한 콜백을 AudioServicesAddSystemSoundCompletion으로 등록하십시오. 그런 다음 시스템 사운드가 완료되고 장치가 여전히 흔들릴 때마다 시스템 사운드를 다시 시작하십시오. 소리가 짧으면 원하는 효과가 생성됩니다. 흔들림이 멈추는 즉시 소리가 멈추지 않게하려면 재생 (예 : 오디오 대기열 서비스 또는 AVAudioPlayer)에 대한 세부 제어 기능을 제공하는 사운드 API 중 하나를 사용해야합니다.

+0

건배, AVAudioplayer 및 numberLoops 속성을 사용하여 종료되었습니다. 위대한 팁! – typeoneerror