Ios Skaction.PlaySoundFileName在重复时崩溃-精灵套件
我对精灵套件SKAction.PlaySoundFileName有问题。 实际上,在正确播放一段时间后,应用程序崩溃,表示无法加载。 该文件包含在bundle中。导入项目文件时,所有内容都已正确设置 唯一的问题是,在我玩了一段时间后,我会崩溃,说它找不到文件,或者至少无法加载 我的问题是,是否有一种方法可以在每次播放SKAction.PlaySoundFileName的声音时重新充电 编辑-已解决Ios Skaction.PlaySoundFileName在重复时崩溃-精灵套件,ios,swift,sprite-kit,skaction,Ios,Swift,Sprite Kit,Skaction,我对精灵套件SKAction.PlaySoundFileName有问题。 实际上,在正确播放一段时间后,应用程序崩溃,表示无法加载。 该文件包含在bundle中。导入项目文件时,所有内容都已正确设置 唯一的问题是,在我玩了一段时间后,我会崩溃,说它找不到文件,或者至少无法加载 我的问题是,是否有一种方法可以在每次播放SKAction.PlaySoundFileName的声音时重新充电 编辑-已解决 //init var sound = SKAction.playSoundFileNamed("s
//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)
}
实例化的预加载声音不再生成崩溃预加载声音变量
//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)
}
我有一个SKNode类型的小助手类,用于播放音频文件。 注意:要播放音频,必须将辅助对象添加到场景层次结构中
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)
}
}
我相信这已经被问过好几次了,我没有下定决心。我的假设是这可能是一个bug。此外,playsound动作是一个拐杖,需要有一些简单的方式来播放声音。如果您想要任何合理的音频播放,请使用AVAudioPlayer或更好的声音引擎,如ObjectAL.AVAudioPlayer,当下一部分停止时,声音停止,但我需要在整个声音中复制,即使它们重叠。解决方案?我遇到了同样的问题,然后试图强迫网络,所以我解决了。我向您保证它工作正常,不会崩溃。多亏了Nextal,虽然这种崩溃不那么频繁,但您仍然会偶尔遇到崩溃。这是苹果的一个问题,这个解决方案大大降低了崩溃的频率,并将其限制在应用程序发布时(假设是在您预加载操作的时候)。我没有降低错误的频率。我把它脱了。有了这个解决方案(以及在其他应用程序中使用),我没有遇到任何问题。虽然我确信有了swift 2和更多的开源软件,在这方面将会有很多的改进,而且你是我的英雄!你救了我的游戏哈哈哈:)谢谢,声音像地狱一样刺耳!!!!你应该得到更多的选票。