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

Posted

技术标签:

【中文标题】如何停止或暂停 SKAction 播放音乐? - 斯威夫特【英文标题】:How can I stop or pause an SKAction playing music? - Swift 【发布时间】:2015-01-10 19:02:09 【问题描述】:

当按下暂停按钮时,我需要知道如何停止或暂停正在播放我的游戏主题曲的 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")
     
 

【问题讨论】:

如何知道didPause() 是否被调用?它与按钮的动作有关吗?添加 NSLog() 或调试器断点以确认调用了 didPause() 是的,暂停被调用是因为屏幕上的项目会随着每个刻度移动,并且当您按下调用函数 stopTicking() 的按钮时它们会停止移动 有什么帮助吗?我不确定为什么该功能没有被删除 在您的startGameMusic 中您指定的waitForCompletion:true。也许你不能暂停,因为播放器正在播放直到完成 - 没有中断。试试false,看看能不能暂停。 不,不幸的是那没用 【参考方案1】:

我自己刚刚完成了暂停按钮的编码;看起来像 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 变量让我知道它是否暂停。真 = 开 如果它打开并按下暂停,则场景退出滴答声,音频暂停,并且 gameStatus 关闭。 如果游戏状态为假,该按钮将激活场景计时器并从中断处拾取音频。然后在游戏恢复时将 gameStatus 设置为 true。尚未添加主题曲的永久运行功能。

【讨论】:

以上是关于如何停止或暂停 SKAction 播放音乐? - 斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章

播放背景音乐,用户可以停止或重新启动或暂停音乐

如何在 Inno Setup 中制作停止和暂停/恢复/播放音乐按钮

如何暂停、停止和重置 AUFilePlayer?

如何在播放/暂停控制功能中停止无限循环

如何在点击时暂停音乐?

IOS如何在后台播放音乐声音并暂停当前播放的音乐应用程序