ios - 如何在 SpriteKit/Objective C 中添加 "Mute Sound"按钮?

标签 ios objective-c audio sprite-kit

我正在编写一个 SpriteKit 小游戏,我想添加一个静音按钮,这样您就可以在玩我的游戏时听到自己的音乐。目前我只是停止静音按钮所在场景的音频播放(主菜单)。但是,即使音频播放停止,我的游戏仍会自动停止用户音乐。我怎样才能防止这种情况发生?

此外,我想将按下静音按钮(位于主菜单中)的信息传递到我的游戏场景,这样我也可以在那里将音乐静音,我该怎么做? 基本上如何将变量值从一个场景传递到另一个场景?

最佳答案

我刚才所做的是检查 iPod Player 是否正常工作,并将其设置为优先于游戏音乐。 (即检查 iPod 是否正在播放以实际启动游戏音乐,因为如果您使用 AVAudioPlayer,ipod 音乐播放器通常会覆盖您的游戏音乐。

+ (bool) IsIpodPlaying{
    if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying
        || [[MPMusicPlayerController applicationMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying){
        NSLog(@"iPod IS playing");
        return true;
    }else{
        NSLog(@"iPod NOT playing");
        return false;
    }
}

显然,您可以对静音按钮执行相同的操作。如果 iPod 正在播放,请忽略任何操作,否则请停止播放游戏音乐。

要在按下静音按钮时传递信息,您可以(按个人喜好顺序):

  • 将您的 Menu 场景设置为 Game 场景的委托(delegate),并创建一个方法来启用或禁用声音(即 userDidEnableSound: )
  • 创建一个具有启用和禁用声音方法的 SoundControl 单例类,并在您需要的任何地方访问它们。
  • 使用 NSNotificationCenter 发送通知并在菜单中等待。

关于ios - 如何在 SpriteKit/Objective C 中添加 "Mute Sound"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25673745/

相关文章:

ios - 是否有实际的 iPhone App cache.db 可以像模拟器一样查看?

asp.net - asp:Gridview中的LinkBut​​ton可以将音频文件从文件夹检索到html音频,以便可以播放

ios - 将两个同名的 .swift 文件添加到项目中

ios - 应用于 Controller 的背景未应用于 Storyboardswift中的表格 View 单元格

ios - Swift/NSURLSession JSON 下载/在展开可选值时意外发现 nil

ios - 如何区分UITableView自定义section点击和section第一行点击?

objective-c - 使图像移动更多 "fluidly"

c# - 回传背景中的ASP.NET音乐

iOS:从 smb 流式传输音频/视频

ios - 从 NSUserDefaults 返回 token