首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用UISwitch更改变量的值?

如何使用UISwitch更改变量的值?
EN

Stack Overflow用户
提问于 2019-02-14 08:21:55
回答 1查看 197关注 0票数 1

我是一个全新的swift新手,正在努力掌握自己的方向。我目前正在研究一种开关,用于打开/关闭我使用AudioKit制作的这些振荡器对象的音量。我对AudioKit部分没有问题,但我似乎不知道如何使用UISwitch将“体积”变量从绝对值0更改为“开”级别。

请帮帮我!

我已经尝试了很多方法,但经过多次搜索,我终于走到了这一步。我已经决定将每个音量控制的变量声明为它们的'on‘值,然后添加UISwitch并使用if语句来切换音量。

代码语言:javascript
复制
class ViewController: UIViewController {

    var Fsys = 5.00

    //VOLUMES HERE:
    var volumeMono = 0.2
    var volumeBinaural = 0.6

    var A1 = 54.00
    var A2 = 108.00

    @IBAction func `switch`(_ sender: UISwitch) {
        if sender.isOn {
            volumeMono = (volumeMono) * (1)
            volumeBinaural = (volumeBinaural) * (1)
        }
        else {
            volumeMono = (volumeMono) * (0)
            volumeBinaural = (volumeBinaural) * (0)
            }
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        let generator = AKOperationGenerator(channelCount: 2) { _ in


            let leftOutput = AKOperation.sineWave(frequency: A2, amplitude: volumeBinaural)
            let rightOutput = AKOperation.sineWave(frequency: A2 + Fsys, amplitude: volumeMono)

            return [leftOutput, rightOutput]
        }

        AudioKit.output = generator
        AKSettings.playbackWhileMuted = true
        try! AudioKit.start()
        do {
            try AudioKit.start()
        } catch {
            AKLog("AudioKit did not start!")
        }

        generator.start()
    }


}

我希望在开关关闭(停止振荡器的声音)时将变量乘以0,当开关打开时,开关函数将变量乘以1,使音频输出与声明的变量相匹配。

当我运行构建时,系统默认使用开始时声明的卷,而交换机不执行任何操作。

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 13:56:26

当ViewController加载时,viewDidLoad只被调用一次。此时,您正在使用尾部闭包语法创建一个生成器。闭包将捕获当时volumeMono和volumeBinaural的值。它们将分别为0.2和0.6。由于闭包已经捕获了这些值,因此生成器的leftOutput和rightOutput永远不会改变。

如果你的开关正常工作,那么逻辑是有缺陷的。一旦将这些值乘以0,它们将始终为0。我对AudioKit的了解还不够多,所以我建议在切换开关时创建一个新的生成器,或者是否可以调整一些值,但这就是开关没有任何影响的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54681466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档