I have a problem with sprite kit SKAction.playSoundFileNamed. In practice, after some time it is played correctly , the app crashes saying it will not load . The file is inc
prelound sound variable
//init
var sound = SKAction.playSoundFileNamed("sound.mp3", waitForCompletion: false)
var sound2 = SKAction.playSoundFileNamed("sound2.mp3", waitForCompletion: false)
//in the code call function when play sound:
playSound(sound)
...
func playSound(soundVariable : SKAction)
{
runAction(soundVariable)
}
I have this little helper class of type SKNode for playing Audio files. NOTE: Helper object must be added to SKScene hierarchy for audios to be played.
import UIKit
enum SFX_TYPE:Int
{
case NEW_LEVEL = 0
case BANG = 1
}
let SFXContainer:[SFX_TYPE:[SKAction]] = [
SFX_TYPE.NEW_LEVEL : [SKAction.playSoundFileNamed("newlevel.m4a", waitForCompletion: true)],
SFX_TYPE.BANG : [
SKAction.playSoundFileNamed("explosion1.m4a", waitForCompletion: true),
SKAction.playSoundFileNamed("explosion2.m4a", waitForCompletion: true),
SKAction.playSoundFileNamed("explosion3.m4a", waitForCompletion: true),
SKAction.playSoundFileNamed("explosion4.m4a", waitForCompletion: true)
]
]
class SabilandSound: SKNode {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
deinit
{
Helper.masterObserverRemove(self)
}
override init()
{
super.init()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("masterPlaySFX:"), name: NCNPlaySFX, object: nil)
}
func masterPlaySFX(n:NSNotification)
{
let st = SFX_TYPE(rawValue: n.userInfo![NCNPlaySFX] as! Int)!
let c = SFXContainer[st]!
let a = SFXContainer[st]![Helper.randomBetween(0, max: c.count, includeMax: false)]
runAction(a)
}
}