Intereting Posts
iOS: не получает приложение facebook App Приложение iPad показывает странный значок не в проекте Может ли кто-нибудь сказать, что ниже ошибки и как решить эту проблему (Файл является универсальным (3 среза), но не содержит секцию armv7s)? Замените часть пиксельного буфера на белые пиксели в iOS Авторизация UIViews для просмотра PDF-файлов Почему во время кастинга с viewWithTag нет предупреждения? Запретить прокрутку веб-страницы при двойном нажатии на UIWebView Основные отношения «один ко многим» и вид таблицы Facebook App Пригласить «FBSDKAppInviteContent» не признано Значение по умолчанию: 568h@2x.png Минимальная требуемая версия API поиска в iTunes iOS AppDelegate, созданный с помощью сборки тайфуна (метод plist), создается дважды, а вложение свойств не работает Несколько делегатов / источников данных в UITableView При использовании двух статических библиотек в проекте конфликт из-за класса с тем же именем, скомпилированный в обеих статических библиотеках CLocationManager – как вызвать kCLErrorNetwork

Изменение громкости SCNAudioPlayer в режиме реального времени – Swift

Я пытаюсь понять, как я могу изменить громкость SCNAudioPlayer в режиме реального времени.

В настоящее время у меня есть SCNAudioSource подключенный к SCNAudioPlayer . Затем этот аудиоплеер назначается SCNNode так что в моем звуке используется пространственная обработка звука SceneKits.

Как бы то ни было, я могу изменить громкость каждого SCNNode с помощью SCNAudioSource.volume вызванного логической переменной vol . Вывод моего кода для этого показан ниже:

 (audioSource, audioCount) = soundFileSelect(audioFileIndex: 0) audioSource?.isPositional = true if vol { audioSource?.volume = 1.0 } else { audioSource?.volume = 0.0 } let audioPlayer = SCNAudioPlayer(source: audioSource!) geometryNode.addAudioPlayer(audioPlayer) let play = SCNAction.playAudio(audioSource!, waitForCompletion: true) let loopPlay = SCNAction.repeatForever(play) geometryNode.runAction(loopPlay) 

Однако это только изменяет настройку громкости по умолчанию для источника, и это происходит только тогда, когда узел порожден. Я пытаюсь изменить его объем в реальном времени, после нажатия кнопки.

Я чувствую, что мне не хватает чего-то простого, и я пробовал интернет для документации и примеров, но я действительно борюсь. Из документации API Apple я вполне уверен, что это можно сделать. Насколько я могу судить, вам нужно использовать свойство audioNode связанное с SCNAudioPlayer которое является частью протокола AVAudioMixing . Использование этого AVAudioMxing тома AVAudioMxing должно быть то, что мне нужно!

Тем не менее, в течение жизни я не могу решить, как реализовать этот процесс в коде в моей текущей настройке. Я могу получить доступ к mainMixer.volume / outputvolume например:

 audioPlayer.audioNode?.engine?.mainMixerNode.outputVolume=0 

но это, похоже, не работает. Как соединяются компоненты AV и SCN?

Любая помощь или примеры того, как один идет об осуществлении этого, будет чрезвычайно оценен!

Заранее спасибо.