如何停止或暂停SKAction播放音乐? - 斯威夫特

时间:2015-01-10 19:02:10

标签: function audio swift

当按下暂停按钮时,我需要知道如何停止或暂停正在为我的游戏播放主题曲的SKAction。我正在使用的代码是为了在按下按钮时删除操作,但它不起作用。这段代码在我的GameScene类中。

func startGameMusic() {
    runAction (SKAction.playSoundFileNamed("theme.mp3", waitForCompletion: true), withKey: "themeSong")
}

func stopGameMusic() {
    self.removeActionForKey ("themeSong")
}

在GameViewController类中按下暂停按钮时,将调用stopGameMusic函数。

@IBAction func didPause(sender: UIButton) {
    if self.scene.paused == false{
        self.scene.stopTicking()
        self.scene.paused = true
        self.scene.stopGameMusic()        
    }
}

或:

 @IBAction func didPause(sender: UIButton) {
     if self.scene.paused == false{
         self.scene.stopTicking()
         self.scene.paused = true
         self.scene.removeActionForKey("themeSong")
     }
 }

1 个答案:

答案 0 :(得分:0)

我自己刚刚完成了暂停按钮的编码;看起来像Swiftris演示。我是从视图控制器而不是场景中完成的。一次播放的声音在视图控制器中编码,就像游戏一样,为什么不将它们全部保存在一个位置?我添加了几行代码到音频:

import AVFoundation

然后在类函数内...

var backgroundAudio = AVPlayer(URL:NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource("theme",ofType:"mp3")!))

var gameStatus:Bool = true

然后在我的IBAction函数内部链接到暂停按钮......

if(gameStatus == true {

    scene.stopTicking()

    backgroundAudio.pause()

    gameStatus = false

else {

     scene.startTicking()

     backgroundAudio.play()

     gameStatus = true

}

解释:AVFoundation为您提供了大量的音频/视觉工具 gameStatus变量让我知道它是否暂停。 true = on 如果按下并暂停,则场景退出滴答声,音频暂停,并且gameStatus将关闭。 如果游戏状态为false,则按钮会激活场景计时器并从中断处拾取音频。然后,当游戏恢复时,gameStatus设置为true。没有添加主题曲的永久运行功能。