2015-03-03 9 views
9

Indipendentemente dal file wav che ho provato a riprodurre in un progetto, continuo a ricevere lo stesso errore. L'errore indica: Terminazione dell'app a causa dell'eccezione non rilevata 'NSinvalidArgumentException', motivo: 'Risorsa namedfile.wav non può essere caricata'SKAction playsoundfilenamed non riesce a caricare il suono

Non riesco a caricare alcun suono di alcun tipo utilizzando SKAction.playSoundFilenamed. Mi sono assicurato che il file sia correttamente nome e che non sembra essere il problema.

Ho testato questo in diversi progetti, tra cui la seguente progetto di test del gioco in cui io uso tutto il codice di default ad eccezione di una chiamata al SKAction

class GameScene: SKScene { 
    override func didMoveToView(view: SKView) { 
     /* Setup your scene here */ 
     let myLabel = SKLabelNode(fontNamed:"Chalkduster") 
     myLabel.text = "Hello, World!"; 
     myLabel.fontSize = 65; 
     myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); 
     let soundfile = SKAction.playSoundFileNamed("soundProject.wav", waitForCompletion: false) 
     runAction(soundfile) 
     self.addChild(myLabel) 
    } 

non posso ottenere alcun suono di qualsiasi tipo per caricare utilizzando SKAction .playSoundFilenamed. Ho già controllato per assicurarmi che il file sia chiamato correttamente e che esca nel pacchetto. Qualsiasi aiuto sarebbe molto apprezzato. Grazie

UPDATE Ho eseguito il mio codice allegato su un altro computer, e si è complimentato e ha funzionato perfettamente. Deve esserci qualcosa di sbagliato nel mio xcode/simulatore. Qualcuno sa come resettarlo? Grazie

+0

vedono https://github.com/sc24evr/TestAudioSpriteKit per un progetto di esempio che dà me gli errori – sc24evr

+0

Lo stesso problema per me. Lavoro su un progetto per settimane e improvvisamente si verificano problemi nel caricamento dei suoni. La pulizia o la rimozione dei dati derivati ​​non la risolve. – Domsware

+0

Il riavvio del computer risolve il problema per me. – Domsware

risposta

16

Quando si seleziona il file audio in XCode, accedere all'ispettore sul lato destro, quindi assicurarsi che il file sia selezionato per il/i target/i.

CaptureTarget

+0

Controllo il target come suggerito e il target di progetto corretto è stato selezionato. Penso che Xcode sappia che il file esiste ma non riesce a caricarlo. Ad esempio, se ho intenzionalmente sbagliato a digitare il nome del file nel codice, ricevo un errore nel dire che il file non è stato trovato. Qui invece ho un errore che dice che la risorsa "non può essere caricata". – sc24evr

+0

Il suono viene riprodotto solo una volta o da qualche altra parte? Solo per essere sicuro che si stia schiantando qui. Sto cercando di capire se c'è qualche restrizione riguardo a: durata del suono, dimensione del file audio, bitrate del suono, ... Puoi darmi quelle informazioni per il tuo file? O anche caricarlo, così posso provare a riprodurlo nella mia app. – lchamp

+0

Ho suggerito un altro lead in una seconda risposta. Per favore, dai un'occhiata e fammi sapere se ti è stato d'aiuto. In caso contrario, forniscici maggiori informazioni sul file o caricalo. – lchamp

2

Ecco un altro vantaggio che potrebbe aiutare.

A volte SKAction non è molto utile con i file audio. Non ho trovato esattamente il caso (potrebbe essere: file di dimensioni, lunghezza del suono, ...).

In tal caso, si desidera utilizzare AVAudioPlayer anziché.

Per non scrivere il tuo "giocatore", ti suggerisco di usarne uno esistente. Ecco quello che ho già usato (SKTAudio): https://github.com/raywenderlich/SKTUtils/blob/master/SKTUtils/SKTAudio.swift

Ecco come usarlo:

// For background audio (playing continuously) 
SKTAudio.sharedInstance().playBackgroundMusic("music.wav") // Start the music 
SKTAudio.sharedInstance().pauseBackgroundMusic() // Pause the music 
SKTAudio.sharedInstance().resumeBackgroundMusic() // Resume the music 

// For short sounds 
SKTAudio.sharedInstance().playSoundEffect("sound.wav") // Play the sound once 

Si prega di farmi sapere se il file non viene riprodotto anche con AVAudioPlayer. Se è così, potrebbe essere un problema con esso e non il modo in cui è riprodotto.

+0

L'ho provato e non riuscivo ancora a riprodurre il suono. Ho caricato il progetto che ho realizzato per testarlo su https://github.com/sc24evr/TestingSound1. Ho ricevuto purtroppo un errore "TestingSound1 [28834: 778122] 18: 40: 39.824 ERRORE: 168: ECCEZIONE lanciata ('fmt?'):" – sc24evr

+0

Ecco il progetto che cerco di utilizzare SKAction dove continuo a ricevere errori. https://github.com/sc24evr/TestAudioSpriteKit – sc24evr

0

Ho identificato il problema. Ho dovuto modificare le impostazioni audio sul mio Mac attraverso le preferenze di sistema. Dopo aver modificato tutte le impostazioni per utilizzare solo gli altoparlanti interni, il problema è stato risolto.

+0

Problema strano quindi. Sono contento che tu lo faccia funzionare :) – lchamp

+0

Ya sicuramente un problema strano. Grazie ancora per tutti i tuoi suggerimenti. Mi hanno aiutato a restringere il problema in modo significativo. – sc24evr

4

Di che colore è la cartella Suoni?

Se è blu, significa che è un Riferimento cartella.
Se è giallo, è un gruppo .

Si sceglie il riferimento cartella -vs- Gruppo quando si importa la cartella.

Ho trovato che SKAction.playSoundFilenamed funziona correttamente solo quando è caricato come gruppo (giallo).

+0

sì, per la cartella "blu", si dovrà costruire tutto percorso utilizzando: 'lasciare myBundlePath = Bundle.main.bundlePath \t \t lasciare pathInBundle = myBundlePath + "/" + mediaFolder + "/" + name' – ingconti

0

per SWIFT 3.0:

SKAction.run { 
       SKAction.playSoundFileNamed("soundProject.wav", 
       waitForCompletion: false) 
       } 
     } 

e, naturalmente, verificare se risorsa è in progetto/Fasi di copia ..