我目前正在开发一个小游戏,气球从屏幕底部漂浮起来,玩家必须在气球到达顶部之前将它们弹出。
每个气球对象都包含一个方法来安全地设置它的AVAudioPlayer:
func setUpAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
var audioPlayer:AVAudioPlayer?
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
}catch {
print("BALLOON ERROR - AudioPlayer not avaliable.")
}
return audioPlayer
}
然后,在每个气球init()方法中,我运行以下代码:
if let popSound = self.setUpAudioPlayerWithFile("PopSound", type: "wav") {
self.popSound = popSound
}
直到游戏开始几分钟后,它才能正常工作。此时,我开始收到“气球错误- AudioPlayer不可用”。从那时起,在控制台中生成的每个气球都表示找不到我的资源?
此时,我的SKEmitterNodes也开始返回nil。(13785-08-13 18:59:54.527 Stop & Pop256:13785 * -NSKeyedUnarchiver initForReadingWithData::data is NULL)
有没有什么明显的我遗漏了什么可能导致这些错误?
我希望我已经提供了足够的信息,谢谢你的阅读。
发布于 2019-03-26 11:04:37
不..。这行不通的。您必须将audioPlayer变量实例化到类级别。
我试图做到这一点,在类级别的另一个ViewController上实例化了var audioPlayer。
最好的办法是将此方法本地化到您的ViewController中,并将audioPlayer放在这里:
class YourClassName : Type {
var audioPlayer : AVAudioPlayer?
yourMethodForCalling() {
}
https://stackoverflow.com/questions/38930065
复制相似问题