2017-05-12 1 views
1

그래서 여기 이야기가 있습니다.지연 애니메이션 UI 애니메이션없이 연속적인 짧은 사운드 재생

나는 타이머를 가지고 있으며 timer.setEventHandler은 단추를 누를 때 애니메이션 (UI에 10 개의 원을 125ms마다 추가하는 것과 같은)을 렌더링합니다. 애니메이션은 부드럽고 지금까지 그렇게 잘 돌아갑니다.

이제 서클이 추가 될 때마다 사운드를 추가하고 싶습니다. (소리는 삑 소리와 같이 10mm이지만 mp3 파일에서 재생됩니다.) 나는이 접근 시도 :

  1. AudioServicesPlaySystemSound

    애니메이션은 부드럽고입니다,하지만 소리가 고르게 재생되지 않습니다. 적어도 사운드 재생은 UI를 전혀 뒤지지 않습니다. 사용 AVAudioPlay

  2. 나는 싱글 톤 클래스의 AVAudioPlay 인스턴스를 준비 할 때마다 애니메이션 로직은 소리가 별도의 스레드에서 재생되어 있는지 확인하기 위해 DispatchedQueue에 play()를 호출합니다. 단추를 처음 누르면 애니메이션이 지연됩니다. 그러나 애니메이션이 완료되면 곧 (2 초 이내에) 버튼을 다시 누르면 애니메이션과 사운드가 완벽하게 재생됩니다. 그러나 마지막 사운드가 재생 된 후 10 초와 같이 더 오랜 시간 동안 기다리면 애니메이션이 지연되고 소리가 일렁 거리게됩니다.

iOS (iPad Air 2에서 iOS 10을 실행 중)가 실제로 AVAudioPlay 인스턴스가 활성화되어 있지 않을 때 잠자기 상태로 설정되어 있는지 궁금합니다. 마지막 사운드가 재생 된 후 짧은 시간 (2 초) 내에 버튼을 누르지 않으면 AVAudioPlay 스레드가 항상 활성화됩니다.

아이디어가 있으십니까?

+0

AVAudioPlayer입니다. 묻기 전에 검색을 시도하십시오. 여기에 _lot_이 이미 있습니다. "AVAudioPlayer 대기 시간"을 검색하십시오. 귀하의 질문은 예를 들어 http://stackoverflow.com/questions/14162805/playing-sound-effect-with-no-latency-in-objective-c의 매우 가까운 사본입니다. – matt

+1

@matt Nope. 내 솔루션은 게시 된 솔루션이 아닙니다. – zsong

답변

0

알아 냈습니다.

오디오 세션을 활성 상태로 유지하기 위해 타이머를 사용하여 매 0 초마다 영원히 소리를 재생합니다. 그것은 어리석은 소리가 나지만 매력처럼 작동합니다!

관련 문제