gpt4 book ai didi

ios - 为什么我的 update() 函数对 dB 水平没有反应?

转载 作者:搜寻专家 更新时间:2023-10-31 19:39:24 25 4
gpt4 key购买 nike

我正在尝试让我的应用对拍手声或高于正常声级的声音使用react。我为此使用了 Swift 和 SpriteKit。我已经导入了 AVFoundation,当然还有 SpriteKit。这是我的设置:

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)

let docsDir = dirPaths[0] as! String

let soundFilePath =
docsDir.stringByAppendingPathComponent("sound.caf")

let soundFileURL = NSURL(fileURLWithPath: soundFilePath)

let recordSettings =
[AVEncoderAudioQualityKey: AVAudioQuality.Min.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 1,
AVSampleRateKey: 44100.0]

let sprite = SKSpriteNode(imageNamed: "Apple_Swift_Logo")
let recorder = AVAudioRecorder(URL: soundFileURL, settings: recordSettings as [NSObject : AnyObject], error: nil)
var impulseAdded = false

我从 this site 得到了这段代码.

接下来在 GameScenedidMoveToView() 中:

//sprite
sprite.position = CGPointMake(320, 568)
addChild(sprite)

//recorder; meteringEnabled set to true to allow access to dB levels
recorder.meteringEnabled = true
recorder.record()

最后在 update() 函数中:

recorder.updateMeters()
if recorder.averagePowerForChannel(1) > -160 && impulseAdded == false {
sprite.physicsBody?.applyImpulse(CGVector(dx: 0,dy: 100))
impulseAdded = true
}

Sprite 保持静止。不施加脉冲。我的问题是什么?

引用资料:

最佳答案

这一切都归结为这行代码:

AVNumberOfChannelsKey: 1

它在 recordSettings 中。

然后在 update() 函数中这个 if recorder.averagePowerForChannel(1) > -160必须更改为:

if recorder.averagePowerForChannel(0) > -160

它看起来像一个数组,它从零开始。

关于ios - 为什么我的 update() 函数对 dB 水平没有反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com