场景转换声音,不卡顿

2023-12-21

在 SpriteKit 中(对于那些不熟悉它的人)有一种加载和卸载场景以及它们之间的过渡(视觉)的方法。

我试图在场景之间进行声音播放,当它们过渡时......这不会断断续续。

到目前为止,我尝试过的所有方法要么没有声音,要么声音断断续续,即使使用声音管理器也是如此,如下所示:

import AVFoundation
import SpriteKit

open class SoundManager {

    static let soundStart = SKAction.playSoundFileNamed("ActionBeep_AP1.7", waitForCompletion: true)


    static var coinSound = NSURL(fileURLWithPath:Bundle.main.path(forResource: "ActionBeep_AP1.7", ofType: "wav")!)
    static var audioPlayer = AVAudioPlayer()
    open static func playCoinSound(){
        guard let soundToPlay = try? AVAudioPlayer(contentsOf: coinSound as URL) else {
            fatalError("Failed to initialize the audio player with asset: \(coinSound)")
        }
        soundToPlay.prepareToPlay()
        self.audioPlayer = soundToPlay
        self.audioPlayer.play()
    }


}

有人成功地让场景转换声音顺利运行吗?我意识到场景转换期间发生了很多事情,这可能对声音引擎没有帮助。但我认为必须有一种方法可以在场景转换期间发出清晰的声音。

是的,我尝试过 .caf、.mp3 和 .wav 文件,它们都具有不同的“压缩”和原始状态。我认为问题在于我播放声音的方式,而不是文件类型。


正如crashoverride777所说,您需要在加载声音管理器时进行更改。你可以在你的didMoveToView()最小化加载时间的函数:

DispatchQueue.global(qos: .userInitiated).async {
  // Load your sound stuff
}

现在,您可以在需要时加载声音文件,无延迟。

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

场景转换声音,不卡顿 的相关文章

  • 如何使用 Android 手机通话时播放声音?

    是否可以通过编程方式与电话进行交互 例如 您可以通过程序向呼叫者播放音频吗 Google 尚未公开任何允许我们向特定正在进行的调用提供数据的 API 不过 您可以控制通话 检查这篇文章 here http prasanta paul blo
  • iOS、Swift 3 - 当我从详细视图返回后单击“取消”时,UISearchBar 消失

    我在containerView中有一个tableView 以编程方式向其添加一个搜索栏 一切工作正常 除了这种情况 当我点击一个单元格时 当 tableView 由 searchBar 过滤时 然后我从明细视图返回 通过推送转场呈现 然后我
  • 核心音频:与扬声器一起使用,是否可以路由到内部扬声器 - AVAudioSessionPortBuiltInReceiver(不路由到扬声器)

    根据文档 没有关于路由甚至获取 AVAudioSession PortBuiltI Receiver 的端口详细信息的文档 注 请再读一遍 与此端口无关AVAudioSessionPortBuiltInSpeaker 正如我发现的那样并且唯
  • 显示键盘时检测 UITextView 中属性文本的点击

    这是一个补充问题我之前的一个回答 https stackoverflow com a 32262426 3681880对这个问题检测 iOS 中 UITextView 中属性文本的点击 https stackoverflow com que
  • 来自 IOS Xcode 的 Azure 推送通知错误

    我觉得我是世界上第一个尝试让 iOS 快速与 Azure 配合使用的人 但没有太多帮助 我跟着这个创建 iOS 应用程序 https azure microsoft com en us documentation articles app
  • 如何单击“取消”按钮退出搜索?

    我有一个带有取消按钮的搜索栏 但是当我单击 取消 按钮时 它不会关闭搜索栏 如何使单击 取消 时将搜索栏返回到第一个状态 如果您有任何疑问 请询问我 您需要实现 UISearchBarDelegate class ViewControlle
  • 比较两个图像并找出差异百分比

    我一直在尝试通过图像制作动物识别应用程序 我的方法是将所选图像与图像数组中的其他图像进行比较 并列出相似度超过 90 的所有比较 还有其他方法可以比较两个相似但不相似的图像吗 任何建议 将不胜感激 这些计算还必须运行多次迭代 因此非常需要一
  • AWS Cognito / 从子节点获取用户信息

    我有一个使用 AWS Cognito AWSMobileClient 的工作 iOS 应用程序 用户可以使用 AWSAuthUI 登录和登录 注销 接下来我想做的是 拥有另一个用户的子 例如 7y873ff7 u9h4k 我想从其他用户那里
  • Swift:覆盖子类内的类型别名

    所以我正在考虑在我的项目中使用自定义模式 但我无法让它发挥作用 主要思想是改变typealias在每个子类上访问子类特定的接口 protocol InstanceInterface class typealias Interface var
  • iOS 应用程序在 segue 处崩溃(断点发生在 func prepareForSegue 处)

    更新 我发现 仅通过阅读代码来调试是非常困难的 特别是在这样的情况下 https www dropbox com s ty3clsvgednzevj LoaferMap 20for 20iPhone 20copy 202 zip dl 0
  • Swift 类型推断和类型检查问题

    我不是在寻找如何正确执行此操作的答案 而是在寻找为什么会发生这种情况的答案 这是代码 func isInt param AnyObject if let value param as Int print value else print N
  • iOS - 自动调整 CVPixelBufferRef 的大小

    我正在尝试裁剪和缩放CMSampleBufferRef基于用户的输入 基于ratio 下面的代码采用 CMSampleBufferRef 将其转换为 CVImageBufferRef 并使用 CVPixelBuffer 根据其字节裁剪内部图
  • 如何从 Swift 调用 Objective-C 代码?

    在 Swift 中 如何调用 Objective C 代码 Apple 提到它们可以在一个应用程序中共存 但这是否意味着在技术上可以重用 Objective C 中创建的旧类 同时在 Swift 中构建新类 在 Swift 中使用 Obje
  • 为什么 UICollectionView didSelect 方法不起作用?

    我已经创建了我的UICollectionView以编程方式 在这种情况下我的didSelectItemAtIndexPath方法根本不调用 let collectionView UICollectionView frame CGRect x
  • 如何在导航栏中添加右键?

    我有一个问题要在导航栏中添加右键 我有两个视图 视图 A 和视图 B 我添加了一个导航栏来查看A 之后我使用了self navigationController pushViewController显示视图 B 视图B的导航栏左侧自动显示一
  • Swift 完成处理程序语法

    此代码用于回答此处的问题 如何在 Swift 中发出 HTTP 请求 https stackoverflow com questions 24016142 how to make an http request in swift let u
  • AVAudioPlayer只能在模拟器中播放,但不能在设备中播放,为什么?! (iPhone-SDK)

    我有以下播放声音的简单代码 NSString soundPath NSBundle mainBundle pathForResource sound ofType wav player AVAudioPlayer alloc initWit
  • Java 声音可视化器

    我正在尝试制作一个java声音可视化工具 但我完全不知道如何在实时处理音频后立即从提取的音频中获取字节 我可以将程序与 wav 文件同步 但这不是我想要做的 我想用程序生成声音 然后播放它 而不将其保存在任何地方 谢谢您的帮助 本文可以帮助
  • 在 Android 上使用 opus 剪辑从 IOS 发送的声音

    我正在 IOS 中从 audioUnit 录制音频 用 opus 编码字节并通过 UDP 将其发送到 android 端 问题是播放的声音有点削波 我还通过将原始数据从 IOS 发送到 Android 来测试声音 效果非常完美 我的 Aud
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB

随机推荐

  • 无法确定搁置数据库类型,whichdb 无法识别 gdb

    如果我尝试打开刚刚由 shelve 创建的文件 为什么 shelve 会引发错误 import shelve info file name Users bacon myproject temp test info info file she
  • 在结构中启动数组时遇到问题

    class CRA Account int tax 4 double refund 4 int SIN public CRA Account CRA Account CRA Account SIN 0 tax 4 0 refund 4 0
  • ASP.NET Core - System.Text.Json:如何拒绝有效负载中的未知属性?

    ASP NET Core 7 中的 Web API 与 System Text Json 我需要拒绝 PUT POST API 上的 JSON 有效负载 这些 API 指定了其他属性 这些属性不映射到模型中的任何属性 所以如果我的模型是 p
  • Angular UI Router - 使用 ui-sref 导航到动态状态时会出现双斜杠

    我正在创建一个 CMS 系统 因此我希望动态创建状态 由于您无法在配置阶段发出 http 请求 因此我决定在 run 函数中添加路由 如下所述 http blog brunscopelliti com how to defer route
  • 按列值过滤数据帧的行[重复]

    这个问题在这里已经有答案了 我有一个包含 10 列的数据框 一栏给出了鸟类的名称 实际上有 300 个物种 但我只对其中 200 个感兴趣 我只想保留这 200 个物种的信息 我的桌子截图 https i stack imgur com O
  • Hibernate中不同的保存方式有什么区别?

    Hibernate 有一些方法可以以某种方式获取您的对象并将其放入数据库中 它们之间有什么区别 何时使用哪个 为什么没有一种智能方法知道何时使用什么 到目前为止我已经确定的方法是 save update saveOrUpdate saveO
  • 转置一维 NumPy 数组

    我使用 Python 和 NumPy 并且在 转置 方面遇到一些问题 import numpy as np a np array 5 4 print a print a T 调用a T没有转置数组 如果a例如 然后它会正确转置 但我需要转置
  • 如何使用 scalaz.WriterT 记录 for 表达式?

    如何使用 scalaz WriterT 进行日志记录 关于 Monad 变压器 这是一个非常简短的介绍 您可能会找到更多信息哈斯克尔维基 http www haskell org haskellwiki Monad Transformers
  • 如何获取带有浅蓝色字段的 iPhone 地图应用程序蓝点当前位置?

    我认为标题是不言自明的 目前 当我为当前位置添加默认注释时 let currentAnnot MKPointAnnotation currentAnnot coordinate loc coordinate mainMap addAnnot
  • Eclipse kepler - 禁用 javascript 验证

    我刚刚安装了新的 eclipse kepler eclipse 4 3 它向我显示了来自第三方 javascript 库的数百个错误和警告 我尝试通过取消选中 首选项 JavaScript 验证器 中的 启用 JavaScript 语义验证
  • ptrdiff_t 太小?

    我一直想知道 不是吗ptrdiff t应该能够保存任意两个指针的差异根据定义 为什么当两个指针距离太远时会失败 我不是指任何特定的语言 我指的是具有这种类型的所有语言 例如 用地址减去指针1从带有地址的字节指针0xFFFFFFFF当你有 3
  • 在 AWS AMI Linux 服务器上设置 Supervisord [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在努力让主管工作以确保我的队列系统始终运行 以下是我从各种来源拼凑而成的步骤 以 root 或超级用户身份运行 1 easy inst
  • Postgres 时间戳

    我们正在争论在 postgres 中存储时间戳的最佳方式 目前 所有时间戳都存储为 00 并且我们有一个与每个客户端关联的时区 我们查找时区并转换发生某事的时间 这增加了复杂性 因为我们需要进行更多的连接和更复杂的查询 另一种方法是连接到
  • php解析汇率提要XML

    我正在尝试使用欧洲中央银行 ECB 的货币汇率源http www ecb int stats eurofxref eurofxref daily xml http www ecb int stats eurofxref eurofxref
  • BinaryWriter.Write() 如何写入字符串

    我使用BinaryWriter Write 来写入字符串 在msdn中 描述如下 将带有长度前缀的字符串写入 当前编码中的该流 BinaryWriter 并推进 流的当前位置 根据所使用的编码和 正在写入的特定字符 到溪流 我认为长度前缀是
  • 行索引从 1 而不是从零开始,无需在 pandas 中创建附加列[重复]

    这个问题在这里已经有答案了 我知道我可以像这样重置索引 df reset index inplace True 但这将从以下位置开始索引0 我想从1 如何在不创建任何额外列并保留 index reset index 功能和选项的情况下做到这
  • RecyclerView 未在底部调用 onScrolled

    我正在尝试创建一个RecyclerView使用分页 当我尝试向下滚动已经在列表的最后时 我在显示进度条时遇到问题 有回调RecyclerView OnScrollListener其中有一个方法onScrolled用于处理滚动事件 但当没有实
  • 如何处理 webdriver 中的自动完成列表?

    如何从自动完成下拉列表中选择国家 地区名称 请提供谷歌搜索代码的建议 以便我能够理解 如果您的下拉菜单是可编辑的 您可以使用发送键直接键入值 否则您需要根据需要模拟向下箭头键操作 但这一次并不明智 因为如果在下拉列表中添加新值 无论如何在这
  • Go 中 Python string.format 的等价物?

    在Python中 你可以这样做 File file had error error format file myfile error err or this File file s had error error s file myfile
  • 场景转换声音,不卡顿

    在 SpriteKit 中 对于那些不熟悉它的人 有一种加载和卸载场景以及它们之间的过渡 视觉 的方法 我试图在场景之间进行声音播放 当它们过渡时 这不会断断续续 到目前为止 我尝试过的所有方法要么没有声音 要么声音断断续续 即使使用声音管