我为 iPhone 构建了一个小型木琴应用程序,它有 7 个按钮,每个按钮在触摸时都会播放自己的音符。我想扩展其功能,以便当用户将手指从顶部按钮拖动到最底部或其他方式时,所有音符都会按顺序播放,就像您在钢琴键上拖动手指一样。
我尝试过添加各种拖动手势(内部/外部、进入/退出),但它们都仅适用于接收操作的第一个按钮。 IE。当手指拖动到第一个按钮之外时,会播放第一个声音,但当手指进入第二个按钮时,则不会发生任何事情。
我试图将不同的手势(Touch Up Inside + Drag)连接到这个单一的 IBAction 中:
@IBAction func notePressed(_ sender: UIButton) {
playNote(noteNumber: sender.tag)
}
func playNote(noteNumber : Int) {
let soundURL = Bundle.main.url(forResource: "note\(noteNumber)", withExtension: "wav")
do {
try audioPlayer = AVAudioPlayer.init(contentsOf: soundURL!)
} catch {
print(error)
}
audioPlayer.play()
}
也许应该创建单独的 IBAction?谁能告诉我应该去哪里寻找?
最佳答案
这是我的解决方法:
- 展开
ViewController
类。检查panView.swift
文件。在这里,您将创建事件捕获器来监听滑动手势识别器
(您需要事先将其添加到主 Storyboard中) - 创建一个
AVAudioPlaye
对象数组。使用路径URL
初始化这些对象,然后让它们准备好播放。请参阅prepareSounds()
函数。
更详细的解释here
如果您在重新创建应用程序时遇到任何问题,请告诉我。
欢呼!
关于ios - 拖动时连续发出声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46277900/