首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏运行一段时间后,AVAudioPlayer返回nil

游戏运行一段时间后,AVAudioPlayer返回nil
EN

Stack Overflow用户
提问于 2016-08-13 14:52:25
回答 1查看 116关注 0票数 2

我目前正在开发一个小游戏,气球从屏幕底部漂浮起来,玩家必须在气球到达顶部之前将它们弹出。

每个气球对象都包含一个方法来安全地设置它的AVAudioPlayer:

代码语言:javascript
运行
复制
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()方法中,我运行以下代码:

代码语言:javascript
运行
复制
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)

有没有什么明显的我遗漏了什么可能导致这些错误?

我希望我已经提供了足够的信息,谢谢你的阅读。

EN

回答 1

Stack Overflow用户

发布于 2019-03-26 11:04:37

不..。这行不通的。您必须将audioPlayer变量实例化到类级别。

我试图做到这一点,在类级别的另一个ViewController上实例化了var audioPlayer。

最好的办法是将此方法本地化到您的ViewController中,并将audioPlayer放在这里:

代码语言:javascript
运行
复制
class YourClassName : Type {
var audioPlayer : AVAudioPlayer?

yourMethodForCalling() {

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38930065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档