非常快速地切换音频播放 on/off
toggle audio play back on/off very quickly
我正在处理一个只有一个视图的简单项目。当用户按下视图时,应该播放一个音调,当他们抬起手指时应该停止。基本上像摩尔斯电码。
编辑:为了澄清起见,我正在寻找一种与键盘发出的声音效果一样即时和短暂的效果。 UILongPressGestureRecognizer 的 Min Duration 设置为 0.01,因此它立即有效启动。
我现在的设置方式是这样的:
var player = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
// Set up sound files
var fileLocation = NSString(string: NSBundle.mainBundle().pathForResource("Eb", ofType: "mp3")!)
var error:NSError? = nil
player = AVAudioPlayer(contentsOfURL: NSURL(string: fileLocation), error: &error)
player.prepareToPlay()
}
@IBAction func pressed(gesture: UILongPressGestureRecognizer) {
switch gesture.state{
case .Began:
player.play()
//Some other code
case .Ended:
player.pause()
//Some other code
default:
return
}
}
现在,如果按键时间适中,则此方法有效,但如果按键时间过短,则声音片段不会播放。声音文件的开头没有空白 space,所以我知道这不是问题所在。我也确定手势识别器正在被调用,因为 \ Some other code
执行得很好。
我的问题是,是否有其他方法可以使音频响应更快?我需要它能够非常快速地打开和关闭。其他框架中是否有其他播放方法或生成音调的方法会更快?
我最终找到的这个问题的解决方案并不完美,但我会把它留在这里,以防有人偶然发现类似的问题。
我设置了允许的最短播放时间,在我的例子中是 0.1 秒。当按钮被按下时,NSTimer 开始倒计时,当它达到 0 时,if 触发一个设置标志的函数。当按钮被释放时,它会检查标志是否已设置,如果是,则停止播放。如果未设置标志,播放将继续,直到计时器达到零。
我正在处理一个只有一个视图的简单项目。当用户按下视图时,应该播放一个音调,当他们抬起手指时应该停止。基本上像摩尔斯电码。
编辑:为了澄清起见,我正在寻找一种与键盘发出的声音效果一样即时和短暂的效果。 UILongPressGestureRecognizer 的 Min Duration 设置为 0.01,因此它立即有效启动。
我现在的设置方式是这样的:
var player = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
// Set up sound files
var fileLocation = NSString(string: NSBundle.mainBundle().pathForResource("Eb", ofType: "mp3")!)
var error:NSError? = nil
player = AVAudioPlayer(contentsOfURL: NSURL(string: fileLocation), error: &error)
player.prepareToPlay()
}
@IBAction func pressed(gesture: UILongPressGestureRecognizer) {
switch gesture.state{
case .Began:
player.play()
//Some other code
case .Ended:
player.pause()
//Some other code
default:
return
}
}
现在,如果按键时间适中,则此方法有效,但如果按键时间过短,则声音片段不会播放。声音文件的开头没有空白 space,所以我知道这不是问题所在。我也确定手势识别器正在被调用,因为 \ Some other code
执行得很好。
我的问题是,是否有其他方法可以使音频响应更快?我需要它能够非常快速地打开和关闭。其他框架中是否有其他播放方法或生成音调的方法会更快?
我最终找到的这个问题的解决方案并不完美,但我会把它留在这里,以防有人偶然发现类似的问题。
我设置了允许的最短播放时间,在我的例子中是 0.1 秒。当按钮被按下时,NSTimer 开始倒计时,当它达到 0 时,if 触发一个设置标志的函数。当按钮被释放时,它会检查标志是否已设置,如果是,则停止播放。如果未设置标志,播放将继续,直到计时器达到零。