ARSCNView で ARKit 2.0 を実行します。iOS12 アプリケーションはマルチスレッドを使用しているため、これらの機能はメイン スレッドで実行されています (念のため)。また、メインスレッドでも関数を明示的に実行せずに試しましたが、役に立ちませんでした。
.aiff サウンド ファイルを使用していますが、.wav も試しました。喜びはありません。
ノード階層から audioNode_alarm を削除しようとしましたが、サウンドは引き続き再生されます。ビュー階層から ARSCNView を削除しても、サウンドは再生されます。FFS
私が見る限り、オーディオの再生を停止するために、私は想定どおりのことを行っています。何をやっても音声が止まりません。なぜだろう?
weak var audioNode_alarm: SCNNode!
weak var audioPlayer_alarm: SCNAudioPlayer?
func setupAudioNode() {
let audioNode_alarm = SCNNode()
addChildNode(audioNode_alarm)
self.audioNode_alarm = audioNode_alarm
}
func playAlarm() {
DispatchQueue.main.async { [unowned self] in
self.audioNode_alarm.removeAllAudioPlayers()
if let audioSource_alarm = SCNAudioSource(fileNamed: "PATH_TO_MY_ALARM_SOUND.aiff") {
audioSource_alarm.loops = true
audioSource_alarm.load()
audioSource_alarm.isPositional = true
let audioPlayer_alarm = SCNAudioPlayer(source: audioSource_alarm)
self.audioNode_alarm.addAudioPlayer(audioPlayer_alarm)
self.audioPlayer_alarm = audioPlayer_alarm
}
}
}
func stopAlarm() {
DispatchQueue.main.async { [unowned self] in
self.audioNode_alarm?.removeAudioPlayer(self.audioPlayer_alarm!)
self.audioNode_alarm?.removeAllAudioPlayers()
}
}