2014-10-22 4 views
5

화면을 터치 할 때마다 사운드 파일을 재생하는 앱이 있습니다. 몇 가지 이유를 들어, 응용 프로그램은 다음과 같은 오류와 함께 한 동안 모든 충돌합니다사운드 리소스를로드 할 수 없습니다. Swift SKAction

runAction(SKAction.playSoundFileNamed("tick.mp3", waitForCompletion: false)) 
:

reason: 'Resource tick.mp3 can not be loaded' 

을 경우 당신은 내가 파일을 화면을 탭 때마다 연주하는 여기, 필요

매우 자주 발생하지는 않습니다. 어쩌면 앱 실행 횟수가 10 분의 1에이를 수 있습니다. 대부분의 경우 모든 것이 예상대로 작동합니다. 나는 내가 충돌을 일으키기 위해 무엇을하고 있는지 알고 싶다. 그러나 나는 단서가 없다! 나는 그것이 붕괴하지 않을 때와 겉으로보기에는 다르지 않다. 당신이 playSound 기능을 통해 소리를 재생하면 그럼 난이 문제를 얻을 갑자기 ...

+0

사운드 액션을 글로벌 상수 도움말로 미리로드 할 수 있습니까? – Okapi

+0

'Resource tick.mp3'에 대한 링크를 주시면 해결하겠습니다. (예 : DropBox에서) –

+0

@ kartboy55 또한 오류 로그가 유용 할 것입니다 ... 실제로 오류 메시지가 무엇입니까? – Whirlwind

답변

3

, 그것은 작동합니다

var soundFile = SKAction.playSoundFileNamed("bark.wav", waitForCompletion: false) 
playSound(soundFile) 

꺼내, 모든의

func playSound(soundVariable : SKAction) 
{ 
    runAction(soundVariable) 
} 
+0

이것은 동일합니다 –

+5

@ NikitaZernov 아니요, 이건 똑같지 않아서 왜 당신이 투표를하지 않았는지 모르겠습니다. 사운드 파일을 미리로드 한 다음'playSound' 함수를 통해 재생하면 충돌을 막을 수 있습니다. 이전에도 비슷한 질문이 여러 번 제기되었으며 이는 항상 해결책이었습니다. 이것은 신속한 버그로 생각됩니다. 나는 그것이 똑같아 보이지만이 경우에 당신이 틀리기 때문에 가정을하지는 않는다는 것을 압니다. –

+1

감사합니다. Reece Kenney! 당신의 결정은 나를 잘 도왔습니다! –

4

첫째,을 mp3 파일을 사용하여 (짧은) 음향 효과를 재생하는 것처럼 보입니다. MP3를 사용하면 오디오가 압축됩니다. 메모리에서, 그것은, 더 큰 크기가 다를 것이다. 또한 디코딩 성능 패널티가 있습니다 (디코딩에는 CPU 시간이 필요함). 가장 중요한 것은, 내가 mp3 파일에 대해 이야기하고있는 이유는 docs에서 찾을 수 있습니다 : 당신이 볼 수 있듯이, 문제는 한 번에 하나의 MP3 파일이 하드웨어를 사용하여 재생할 수 있다는 것입니다

When using hardware-assisted decoding, the device can play only a single instance of one of the supported formats at a time. For example, if you are playing a stereo MP3 sound using the hardware codec, a second simultaneous MP3 sound will use software decoding. Similarly, you cannot simultaneously play an AAC and an ALAC sound using hardware. If the iPod application is playing an AAC or MP3 sound in the background, it has claimed the hardware codec; your application then plays AAC, ALAC, and MP3 audio using software decoding.

. 한 번에 두 개 이상의 mp3를 재생하면 소프트웨어로 디코딩되고 속도가 느려집니다.

따라서 사운드 효과를 재생하려면 .wav 또는 .caf 파일을 사용하는 것이 좋습니다. mp3는 배경 음악에 유용 할 것입니다. 충돌 문제에 대한

:

  • 시도가 SKAction에 강한 참조를 유지하고 재사용하는 대신 .MP3
  • 시도의 .WAV 또는 .caf 파일을 사용하는 제안 Reece Kenney.
관련 문제