SKAction playSoundFileNamed 停止背景音乐

2023-11-29

我想要我的SpriteKit游戏不中断用户收听的背景音乐(Music.app 或广播应用程序)。

一切都很顺利,直到执行到这一行:

sSharedShootSoundAction = [SKAction playSoundFileNamed:@"plane_shoot.aiff" 
                                     waitForCompletion:NO];

此行之后背景音乐停止。如何避免这种情况?


我自己也遇到过这个问题。仅供参考,我的解决方案很快,所以如果您仍在使用它,只需将其转换为 Objective C 即可。

对我来说,我的解决方案包括两部分。首先,我必须在场景文件的 didMoveToView 函数中初始化 SoundAction SKAction。所以你的场景文件应该是这样的:

import SpriteKit
import GameKit
import AVFoundation

class GameScene: SKScene, SKPhysicsContactDelegate {
    
    var sSharedShootSoundAction: SKAction = SKAction()

    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        sSharedShootSoundAction = SKAction.playSoundFileNamed("plane_shoot.aiff", waitForCompletion: false)
    }

}

然后,在您的 AppDelegate 文件中,您需要将以下代码行放入应用程序的 didFinishLaunchingWithOptions 函数中。 (不要忘记在您的 AppDelegate 中导入 AVFOUNDATION)。所以你的应用程序委托方法应该像这样:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

    // INSERT THIS LINE BELOW.
    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)

    return true
}

with Swift 4:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    let audioSession = AVAudioSession.sharedInstance()
    do {
        try audioSession.setCategory(AVAudioSessionCategoryAmbient)
    }catch{
        // handle error
        print("error setting category of audio session")
    }
    return true
}

希望这能为您解决问题,就像为我解决问题一样!如果没有,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SKAction playSoundFileNamed 停止背景音乐 的相关文章

  • 检测 AvPlayer 何时切换比特率

    在我的应用程序中 我使用 AVPlayer 通过 HLS 协议读取一些流 m3u8 文件 我需要知道在流会话期间 客户端切换比特率多少次 我们假设客户端的带宽正在增加 因此客户端将切换到更高比特率的段 AVPlayer能检测到这个开关吗 T
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • 当强制退出/向上滑动以终止 iOS 应用程序而不点击横幅/警报时,如何获取推送通知有效负载?

    我正在构建一个应用程序来处理从 Parse 推送的通知 并尝试创建通知历史记录功能 我已经成功启用了后台模式 因此当应用程序在后台运行时 应用程序可以通过以下方式很好地获取有效负载application didReceiveRemoteNo
  • 频繁绘制 CGPath 时的性能

    我正在开发一个将数据可视化为折线图的 iOS 应用程序 该图被绘制为CGPath在全屏自定义中UIView最多包含 320 个数据点 数据经常更新 图表需要相应地重新绘制 刷新率为 10 秒就很好了 到目前为止很容易 然而 我的方法似乎需要
  • 防止 AlertView 被解雇

    任何人都可以帮助我防止在其按钮单击事件上解雇警报视图吗 我有一个 textview 作为我的alertView 的子视图 如果 textview 值为 nil 我不想关闭它 因为这是一个非常老的问题 但我得到了一个解决方案 并且如果其他开发
  • iOS 循环对象的属性并添加操作

    我有一个具有几个类似属性的类 UISliders 我想添加用户开始和结束使用每个滑块时的操作 每个滑块都将链接到同一个选择器 因此我考虑只是迭代它们 而不是编写 10 个几乎相同的代码块 问题是 最有效的方法是什么 我尝试过这样的事情 在运
  • Google 地图 API -> OpenGLES 崩溃

    日志是从 Crashlytics 粘贴的 对于许多用户来说 崩溃经常发生 据我所知 它与设备 iOS 版本无关 我在我的代码中找不到任何错误 这似乎是纯粹的库问题 是 Google 地图 API 错误吗 我可以做些什么来修复它 或者我应该在
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们
  • 在 swift3 中结合平移、alpha 和缩放动画

    我是 iOS Swift 开发的新手 我尝试将三个参数组合在一个动画中 但没有成功 我认为解决方案就在这里 Apple Dev Core 动画编程指南 https developer apple com library content do
  • iOS 13 beta 外部屏幕上的 OverscanCompensation

    我正在测试一个应用程序的测试版 但遇到了外部屏幕的问题 我们看到应用程序周围有黑色边框 我们之前可以通过设置来纠正它overscanCompensation to none但在 iOS 13 中 该设置根本没有任何效果 我们曾经看到一个错误
  • 在运行时获取 iPhone 应用程序的产品名称?

    如何才能实现这一目标 我想获取名称 以便可以在应用程序中显示它 当然 每次更改名称时不必在代码中更改它 Try this NSBundle bundle NSBundle mainBundle NSDictionary info bundl
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 径向渐变绘制性能 - OpenGL-ES 可以改进吗?

    我正在开发一个图像处理应用程序 它将径向渐变叠加在从照片库加载的图像上 在屏幕上 我有一个滑块可以动态地增大 减小径向渐变的半径 我发现模拟器上的性能很好 但在 iPhone 3G 或 3GS 上就很糟糕了much移动滑块时重绘速度较慢 我
  • 如何使用MKMapView完成加载委托,可能的“完成显示”委托?

    当用户在选择注释后点击 保存 时 我尝试保存地图视图的缩略图 当用户尚未放大该注释时会出现问题 因此尚未加载关闭缩放级别 这就是用户点击保存后我正在做的事情 将布尔值 saving 设置为 true 居中并放大注释 无动画 当调用mapVi
  • 使用 iPhone 摄像头检测心率 [重复]

    这个问题在这里已经有答案了 可能的重复 使用摄像头检测心率 https stackoverflow com questions 9274027 detecting heart rate using the camera 我正在研究 iOS
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • iOS 10 的错误? NSDate 日本地区时间描述和 24 小时休息

    这似乎是 iOS 10 的一个错误 在 iOS 8 和 9 中都可以 NSDate date description 的小时描述是错误的 它附加了 24 小时描述和 12 小时描述 我没有使用 NSDateFormatter 只是默认设置

随机推荐

  • WebSphere Liberty Profile:未找到上下文根

    我似乎无法在本地工作 即使相同的 WAR 在远程服务器上工作 当我在本地访问我的应用程序时 出现 找不到上下文根 错误 Liberty 配置文件版本为 8 5 5 5 以下是相关文件 服务器 xml
  • 使用单个ajax请求渲染json数据和部分视图

    下面给出的代码向控制器发送 ajax 请求 if btid 01 var allData sessionName sessionname val foundStudent studentId val code btid var mySess
  • 如何合并主分支和主分支?

    大约一个月前 我创建了一个 git 存储库 其中主分支称为 master 几天前 当我尝试提交并推送到同一个存储库时 它将我的更改推送到 master 分支 但我收到一条消息 说主分支已更改为 main 分支 我尝试过合并 但收到一条错误消
  • ReferenceError:找不到变量:__DEV__ [重复]

    这个问题在这里已经有答案了 当我启动我的项目时 我得到了ReferenceError Can t find variable DEV 错误 我已经注释掉了几乎所有代码 现在只有这个 import React Component Text f
  • 如何使用 pyusb 与该设备通信?

    我有一个 Netware uniFlow 设备 当我插入它时 它会显示在 dmesg 中 2962 369905 usb 2 1 4 new full speed USB device number 11 using ehci pci 29
  • 使用 Intel Core 2 Duo E8500 CPU 的 CL_DEVICE_NOT_AVAILABLE

    我收到错误CL DEVICE NOT AVAILABLE跑步时这个示例代码 然而 与该问题不同的是 我的 CPU Intel Core 2 Duo E8500 CPU 似乎是支持的 我已确保链接到 Intel 版本的 OpenCL 库 因为
  • 使用paint时如何在WinForms中实现垂直和水平滚动条?

    在我的代码中 我绘制了一个矩形 通常该矩形对于屏幕来说太大了 即使最大化也是如此 我已经设置了表单属性AutoScroll为 true 这似乎没有任何作用 我的表单上除了矩形绘画之外不会有任何其他内容 我如何实现垂直和水平滚动 Printi
  • 为什么这个谓词留下一个选择点?

    我写了以下谓词 list withoutlast Last forget the last element list withoutlast First Second List First WithoutLast list withoutl
  • 是否有用于 PDF 元数据的 NPM 模块?

    我正在寻找一个npm模块 我可以用它来编辑元标签 例如Author and TitlePDF 文件 或者 开放许可的 JavaScript 库也可以 有一个程序叫pdftk 如果它是一个 这将是合适的npm module 我还没有测试过这个
  • Dart 中的插入符号有什么作用

    我正在查看一些 Flutter 项目 我注意到以下代码 override int get hashCode gt todos hashCode isLoading hashCode 这个 符号在这里做什么 这行代码是在Flutter项目的A
  • 如何根据 C++ 标准访问对象表示?

    如何访问对象表示 为了回答这个问题 我将其分为两个问题 1 如何获得对象表示的指针 根据标准 我看不到任何方法来获取指向对象表示 人们经常建议这样实现 some type obj const char rep reinterpret cas
  • System.getProperty("java.class.path") 不显示“WEB-INF/lib”和包含的 jar

    String CompilePath abc java JavaCompiler compiler ToolProvider getSystemJavaCompiler String classpath System getProperty
  • 在地图视图中显示动态注释图钉

    我正在开发一个应用程序 它使用MKMapView 我在其中显示了多个注释 现在我想显示引脚的自定义注释图像 我为 MapViewAnnotation 制作了自定义类 import
  • C# 高级排列场景

    我试图弄清楚如何在给定以下信息的情况下找到所有组合 我从一个 JSON 数据集开始 var choices 1 Q 100 R 150 W 250 T 30 2 Q 90 R 130 W 225 T 28 3 Q 80 R 110 W 21
  • 从谷歌驱动器中的特定文件夹获取文件列表

    我正在使用 Google Play 服务 SDK 并尝试了Demos来自开发者网站 有没有办法从特定文件夹获取 下载 所有文件 任何指针都会有很大帮助 整个示例代码似乎并不完整 这是执行类似操作的方法的 await 版本 必须在非 ui 线
  • 如何分组为数组映射?

    Can a groupingBy对流的操作会生成一个映射 其中的值是arrays而不是列表或其他集合类型 例如 我有一堂课Thing 事物有主人 所以Thing has a getOwnerId方法 在事物流中 我想按所有者 ID 对事物进
  • 使用 Flask 框架从 html 播放波形文件?

    这是我的 run py 代码 from flask import app flask Flask name app config from object config app route methods GET POST def new t
  • 以角度形式修补值

    我正在使用 Angular 6 制作一个应用程序 其中我使用的是 Angular 动态形式 截至创建表单并提交 我已完成所有工作 您可以看到工作情况堆栈闪电战 https stackblitz com edit angular x4a5b6
  • WPF OpenFileDialog 与 MVVM 模式? [复制]

    这个问题在这里已经有答案了 我刚刚开始学习 WPF 的 MVVM 模式 我撞墙了 当你需要展示时你会做什么OpenFileDialog 这是我尝试使用它的示例用户界面 单击浏览按钮时 会出现OpenFileDialog应该显示 当用户从文件
  • SKAction playSoundFileNamed 停止背景音乐

    我想要我的SpriteKit游戏不中断用户收听的背景音乐 Music app 或广播应用程序 一切都很顺利 直到执行到这一行 sSharedShootSoundAction SKAction playSoundFileNamed plane