2015-03-03 3 views
9

Egal, welche WAV-Datei ich in einem Projekt abgespielt habe, ich bekomme immer den gleichen Fehler. Der Fehler lautet: Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: 'Ressource namedatei.wav kann nicht geladen werden'SKAction playsounddateiname kann Sound nicht laden

Ich kann mit SKAction.playSoundFilenamed keinen Sound irgendeiner Art laden. Ich habe sichergestellt, dass die Datei korrekt benannt ist und das scheint nicht das Problem zu sein.

Ich habe dies in verschiedenen Projekten getestet, darunter die folgenden Testspiel-Projekt, bei ich alle Standardcode verwenden, außer für einen Aufruf der 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) 
    } 

ich keinen Ton von jeder Art bekommen kann mit SKAction laden .playSoundFile ist benannt. Ich habe bereits überprüft, um sicherzustellen, dass die Datei korrekt benannt ist und dass sie im Bundle beendet wird. Jede Hilfe würde sehr geschätzt werden. Danke

UPDATE Ich lief meinen beigefügten Code auf einem anderen Computer, und es compliled und lief perfekt. Es muss etwas mit meinem xcode/Simulator nicht stimmen. Kann jemand es zurücksetzen? Danke

+0

siehe https://github.com/sc24evr/TestAudioSpriteKit für ein Beispielprojekt, das gibt mir die Fehler – sc24evr

+0

Das gleiche Problem für mich. Ich arbeite wochenlang an einem Projekt und plötzlich gibt es Probleme beim Laden von Sounds. Das Bereinigen oder Entfernen von abgeleiteten Daten löst es nicht. – Domsware

+0

Neustart Computer lösen das Problem für mich. – Domsware

Antwort

16

Wenn Sie Ihre Sounddatei in XCode auswählen, öffnen Sie den Inspektor auf der rechten Seite und stellen Sie sicher, dass die Datei für Ihre Ziele ausgewählt ist.

CaptureTarget

+0

Ich überprüfe das Ziel wie vorgeschlagen und das richtige Projektziel wurde ausgewählt. Ich denke, dass Xcode weiß, dass die Datei existiert, aber nicht geladen werden kann. Zum Beispiel, wenn ich den Dateinamen falsch in den Code falsch schreibe, erhalte ich einen Fehler, der sagt, dass die Datei nicht gefunden wird. Hier bekomme ich eher eine Fehlermeldung, dass die Ressource "nicht geladen werden kann". – sc24evr

+0

Wird der Sound nur einmal oder anderswo wiedergegeben? Nur um sicher zu sein, dass es hier zusammenbricht. Ich versuche zu schauen, gibt es irgendwelche Einschränkungen bezüglich: Sound-Zeit-Länge, Sound-Dateigröße, Sound-Bitrate, ... Können Sie mir diese Informationen für Ihre Datei geben? Oder lade es sogar hoch, damit ich es in meiner eigenen App spielen kann. – lchamp

+0

Ich habe eine andere Führung in einer zweiten Antwort vorgeschlagen. Bitte sehen Sie es sich an und lassen Sie mich wissen, ob es geholfen hat. Wenn dies nicht der Fall ist, geben Sie mir bitte mehr Informationen über die Datei oder laden Sie sie hoch. – lchamp

2

Hier ist eine weitere Führung, die Ihnen helfen könnten.

Manchmal ist SKAction nicht sehr praktisch mit Audiodateien. Ich habe in diesem Fall nicht genau gefunden (könnte sein: Dateigröße, Soundlänge, ...).

In diesem Fall würden Sie AVAudioPlayer anstatt sie verwenden möchten.

Um nicht Ihren eigenen "Player" zu schreiben, empfehle ich Ihnen, einen vorhandenen zu verwenden. Hier ist ein ich schon benutzt habe (SKTAudio): https://github.com/raywenderlich/SKTUtils/blob/master/SKTUtils/SKTAudio.swift

Hier ist, wie es zu benutzen:

// 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 

Bitte lassen Sie mich wissen, wenn die Datei nicht abgespielt wird sogar mit AVAudioPlayer. Wenn ja, könnte es ein Problem damit sein und nicht die Art, wie es gespielt wird.

+0

Ich habe das versucht und konnte immer noch nicht den Sound spielen. Ich habe das Projekt hochgeladen, das ich gemacht habe, um dies unter https://github.com/sc24evr/TestingSound1 zu testen. Ich habe leider immer noch einen Fehler erhalten "TestingSound1 [28834: 778122] 18: 40: 39.824 FEHLER: 168: AUSNAHME ausgelöst ('fmt?'):" – sc24evr

+0

Hier ist das Projekt, dass ich versuche, die SKAction zu verwenden, wo ich immer Fehler erhalte. https://github.com/sc24evr/TestAudioSpriteKit – sc24evr

0

Ich erkannte das Problem. Ich musste die Soundeinstellungen auf meinem Mac über die Systemeinstellungen ändern. Sobald ich alle Einstellungen geändert habe, um nur die internen Lautsprecher zu verwenden, wurde das Problem behoben.

+0

Sonderausgabe dann. Freut mich, dass es funktioniert :) – lchamp

+0

Ya definitiv ein seltsames Problem. Nochmals vielen Dank für all Ihre Vorschläge. Sie haben mir geholfen, das Problem erheblich einzugrenzen. ja – sc24evr

4

Welche Farbe hat Ihr Sounds-Ordner?

Wenn es blau ist, bedeutet das, dass es sich um eine Folder Reference handelt.
Wenn es gelb ist, ist es eine Gruppe.

Sie wählen die Ordnerreferenz -vs- Gruppe, wenn Sie Ihren Ordner importieren.

Ich habe gefunden, dass SKAction.playSoundFilenamed funktioniert nur korrekt, wenn es als Gruppe (gelb) geladen wird.

+0

, für "blau" -Ordner, Sie müssen alle Pfad bauen mit: 'lassen myBundlePath = Bundle.main.bundlePath \t \t lassen pathInBundle = myBundlePath + "/" + mediaFolder + "/" + name' – ingconti

0

für swift 3.0:

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

und natürlich überprüfen, ob Ressource in Projekt/Kopie Phasen ist ..