拖动时的连续声音

时间:2017-09-18 11:10:43

标签: ios swift

我为iPhone制作了一个小型木琴应用程序,它有7个按钮,每个按钮在触摸时都会弹出自己的音符。我想扩展它的功能,以便当用户将手指从顶部按钮拖到最底部或其他方向时,所有音符都会按顺序播放,就像您将手指拖过钢琴键一样。

enter image description here

我已尝试添加各种拖动手势(内/外,进入/退出),但它们都只使用接收动作的第一个按钮。即当手指被拖到第一个按钮外面时播放第一个声音,但是当它进入第二个按钮时,没有任何反应。

我试图将不同的手势(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()
}

也许应该创建单独的IBActions?任何人都可以给我一个关于我应该看的地方的提示吗?

1 个答案:

答案 0 :(得分:0)

这是我的解决方法:

  • 展开ViewController类。检查panView.swift文件。在这里,您将创建事件捕获器来监听Swipe Gesture Recognizer(您需要先将其添加到主故事板中)
  • 创建一个AVAudioPlaye对象的数组。使用路径URL初始化这些对象,然后准备将其播放。请参见prepareSounds()函数。

更详细的说明here

让我知道您在重新创建应用程序时是否遇到任何麻烦。

加油!