1

所以基本上,我在第一个场景中播放音乐,一切正常。我过渡到场景 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 和位置选项,几乎所有东西。当我转换回我的第一个场景时,我希望音乐能够再次正常播放。

4

0 回答 0