我目前正在开发一款小型游戏,其中气球从屏幕底部浮起,玩家必须在它们到达顶部之前弹出它们。
每个气球对象都包含一个安全设置它的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
}
直到比赛进行到几分钟才能正常运行。此时我开始收到“BALLOON ERROR - AudioPlayer不可用”。在控制台中为从那时起生成的每个气球表明我的资源没有找到?
此时我的SKEmitterNodes也开始返回nil。 (2016-08-13 18:59:54.527 Stop& Pop [256:13785] *** - [NSKeyedUnarchiver initForReadingWithData:]:数据为NULL)
是否有任何明显的遗漏可能导致这些错误?
我希望我提供了足够的信息,谢谢你的阅读。
答案 0 :(得分:0)
不...这行不通。您必须将audioPlayer变量实例化到Class Level。
我试图做到这一点,在类级别的另一个ViewController上实例化了var audioPlayer。
您最好的选择是将此方法本地化到ViewController中,并将audioPlayer放在此处:
cat