使用SKAudioNode和Swift返回时,我的mp3无法在SpriteKit Scene上正常播放

时间:2016-03-24 10:29:56

标签: ios swift audio skaudionode

基本上,我在第一个场景上播放音乐,一切正常。我转换到场景2,音乐自动停止,这就是我想要的。但后来我转过身来,音乐开始了半秒钟......然后就被无缘无故地切断了。只是为了让事情变得更奇怪,只有当我将我的物理设备置于睡眠模式,然后将其解锁时,它才会再次完美。

我制作了一个过于简化的代码,只是为了直接解决我在实际项目中遇到的问题。这是我的第一个场景,它只是在启动时播放音乐,并在触摸时转换到场景2:

import SpriteKit

class GameScene: SKScene
{
    override func didMoveToView(view: SKView)
    {
        let backgroundMusic = SKAudioNode(fileNamed: "WhatIsLove.mp3")
        backgroundMusic.autoplayLooped = true
        backgroundMusic.positional = false
        addChild(backgroundMusic)
    }
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
    {
        let transition = SKTransition.revealWithDirection(.Down, duration: 1.0)
        let nextScene = SceneTwo(size: scene!.size)
        nextScene.scaleMode = .AspectFill
        nextScene.backgroundColor = UIColor.blueColor()
        scene?.view?.presentScene(nextScene, transition: transition)
    }
}

这里是场景2,音乐会在转换之前自动停止。除了在触摸时转换回场景1,我想要音乐再次启动(但在半秒后停止播放),此处没有任何内容:

import SpriteKit

class SceneTwo: SKScene
{
    override func didMoveToView(view: SKView)
    {
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
    {
        let transition = SKTransition.revealWithDirection(.Down, duration: 1.0)
        let nextScene = GameScene(size: scene!.size)
        nextScene.scaleMode = .AspectFill
        nextScene.backgroundColor = UIColor.greenColor()
        scene?.view?.presentScene(nextScene, transition: transition)
    }
}

不知道为什么会这样。我已经尝试了几种与SKAudioNode的组合以及其他方式来声明变量并实现它。我试过不使用autoplayLooped&amp;位置选择,几乎所有。当我转换回第一个场景时,我希望音乐再次正常播放。

0 个答案:

没有答案