2017-06-07 102 views
-1

这是我的一个Xcode项目的代码。当我按下“播放()”时,会发生短鼓声。事情是,当我连续多次敲击自定义视图时,我希望快速鼓声连续发生。然而,声音在完成剪辑(2秒)完成后发生,留下很多死区。我尝试了很多不同的事情,但我做不到。如何快速按下按钮在Xcode上生成声音?

@IBOutlet weak var tabla: TablaHead! 

var tablaSoundUrl = NSURL(fileURLWithPath: Bundle.main.path(forResource: "TablaSound", ofType: "mp3")!) 
var tablaAudioPlayer = AVAudioPlayer() 


override func viewDidLoad() { 
    super.viewDidLoad() 
    tablaAudioPlayer = try! AVAudioPlayer(contentsOf: tablaSoundUrl as URL) 
} 

@IBAction func tapped(_ sender: UITapGestureRecognizer) { 
    if sender.state == .ended { 
     playNoise() 
    } 
} 

public func playNoise() { 
    if (tablaAudioPlayer.isPlaying) { 
     tablaAudioPlayer.stop() 
     tablaAudioPlayer.play() 
    } else { 
     tablaAudioPlayer.play() 
    } 
} 

回答

0

尝试是这样的

@IBOutlet weak var tabla: TablaHead! 

var tablaSoundUrl = NSURL(fileURLWithPath: Bundle.main.path(forResource: "TablaSound", ofType: "mp3")!) 
var tablaAudioPlayer = AVAudioPlayer() 
var tapsCount = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
    tablaAudioPlayer = try! AVAudioPlayer(contentsOf: tablaSoundUrl as URL) 
} 

@IBAction func tapped(_ sender: UITapGestureRecognizer) { 
    tapsCount += 1 
    if sender.state == .ended && tapsCount == 1 { 
     playNoise() 
    } 
} 

public func playNoise() { 
    tapsCount -= 1 
    tablaAudioPlayer.play() 
    if tapsCount > 0 { 
     playNoise() 
    } 
} 
+0

没有运气。我认为问题是我完全不了解AVAudioPlayer。谢谢你尝试! –