2016-10-14 5 views
0

나는 기본적인 게임을 만들고 있는데, 그것을 치고 싶습니다. 나는 Rhythmic Fistman의 도움으로 다양한 구질로 연주 할 수있게되었지만, 이제는 새로운 문제가 있습니다. 빨리 연주하면 시간이 걸립니다. 이것은 큰 문제처럼 보일 수는 없겠지만, 개발중인 게임에서 손가락을 움직일 때마다 히트 사운드를 낼 수있는 기회가 생겨서, 특히 멀티 터치의 경우 상당히 느려집니다.스위프트 3 : AVAudioPlayerNode에서 신속하게 사운드 재생

현재 나는 내가 한 번에 두 hitsounds을 재생할 수있는 AVAudioEngine에서 두 개의 채널에 대한 두 개의 노드를 가지고, 그것을 새로운 사운드를 재생할 수 있도록 나는이 노드 중 하나를 중지하려면이 옵션을 사용하고 있습니다 :

if playerNode.isPlaying { 
    playerNode.stop() 
    playerNode.play() 
} 
playerNode.scheduleFile(file, at: nil, completionHandler: nil) 

이 문제는 isPlaying이 사운드가 실제로 재생 중인지 여부와 관계없이 항상 true를 반환한다는 것입니다. playerNode.stop()을 수행하면 false를 반환하는 것처럼 보이기 때문에 어떤 이유로 든 지체가 매우 적습니다. 실제로는 더 적습니다. 뒤죽박죽으로 톤을 연주합니다.

노드를 재설정하는 대신 hitsound를 재생하지 않고도 쉽게 해결할 수 있다고 생각했지만 isPlaying은 항상 true를 반환하므로이 작업을 수행 할 수 없습니다. 오디오 노드가 사운드를 재생하도록하는 더 빠른 방법이 있습니까?

+0

좋아요 후 필요한 것입니다 보인다,하지만 난 다른 일에 오픈이 게시물을 떠날거야 나는 뭔가 끔찍한 잘못하고있다. – MysteryPancake

답변

0

는 scheduleBuffer, 나는, (놀랍게도)이 일을 갖고있는 것 같아요 대신 옵션으로 .interrupts와 scheduleBuffer를 사용하여 시도 나는 모든