2014-10-22 17 views
5

Ekrana her dokunduğunda bir ses dosyası yürüten bir uygulamam var. Nedense, uygulama aşağıdaki hata ile arada bir her kilitlenmesine:Ses kaynağı yüklenemiyor Swift SKAction

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

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

Eğer ben dosyayı ekran dokunulduğunda her zaman oynamak nasıl burada, lüzum

Bu çok sık olmaz, belki de uygulamada 10 çalışır. Çoğu zaman her şey beklendiği gibi çalışır. Keşke kazaya sebep olmak için ne yaptığımı biliyordum ama hiçbir fikrim yok! Sadece, çarpmadığı zamanlardan farklı görünmüyor. Bir playSound fonksiyonuyla ses oynarsanız Sonra bu sorunu olsun aniden ...

+0

Ses eylemini global sabit bir yardıma önceden yükleyebilir miyim? – Okapi

+0

Lütfen bize 'Kaynak tick.mp3' bağlantısına bir bağlantı verin, bu yüzden onu çözmeye çalışacağım. (Örneğin DropBox'ta) –

+0

@ kartboy55 Ayrıca, kilitlenme günlüğü yararlı olabilir ... Hata mesajı aslında nedir? – Whirlwind

cevap

3

, işe yarayacak

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

PlaySound: Herşeyden

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

Bu aynı –

+5

@NikitaZernov Hayır, bu aynı şey değil, bu yüzden neden oy verdiğinizden emin değilim. Ses dosyasının ön yüklemesi ve daha sonra bir 'playSound 'işleviyle oynatılması kilitlenmeyi önler. Benzer sorular daha önce defalarca sorulmuştur ve bu her zaman çözüm olmuştur. Bunun hızlı bir hata olduğu düşünülmektedir. Aynı göründüğünü biliyorum ama sadece varsayımlar yapmayın çünkü bu durumda yanılıyorsunuz. –

+1

Teşekkürler Reece Kenney! Kararın bana çok yardımcı oldu! –

4

Birincisi, bunu (kısa) ses efektlerini çalmak için mp3 dosyası kullandığınız gibi görünüyor. Mp3 kullanırken ses sıkıştırılır. Hafızada, farklı büyüklükte olacaktır. Ayrıca bir kod çözme performans cezası var (kod çözme CPU zamanını alıyor). En önemli şey, ben mp3 dosyaları bahsediyorum sebebi docs bulunabilir: Gördüğünüz gibi, sorun bir kerede yalnızca bir mp3 dosyası donanım kullanarak çalınabilir olmasıdır

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.

. Bir seferde birden fazla mp3 çalarsanız, bunlar yazılımla çözülür ve bu da yavaştır.

Ses efektlerini yürütmek için .wav veya .caf dosyalarını kullanmanızı öneririm. mp3 muhtemelen arka plan müziği için iyi olurdu. kilitlenen konuyla ilgili

:

  • deneyin SKAction bir güçlü referansı tutun ve yeniden kullanmak yerine .mp3
  • try .wav veya .caf dosyaları kullanmak önerildiği gibi Reece Kenney tarafından.