有没有办法在 Swift 中使用 rate 属性来倒带音乐? [复制]
Posted
技术标签:
【中文标题】有没有办法在 Swift 中使用 rate 属性来倒带音乐? [复制]【英文标题】:Is there a way to rewind music using rate property in Swift? [duplicate] 【发布时间】:2016-04-15 04:20:34 【问题描述】:我正在通过设置 rate
值快速转发我的 AVAudioPlayer
。但是我不知道如何倒带。
我正在制作一个 DJ 应用,其中音乐的播放 rate
在旋转转盘时发生变化,导致音乐快进和快退(同时仍能听到声音)。
这是我目前的转盘旋转方法。如何倒带AVAudioPlayer
?
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?)
for touch in touches
let location = touch.locationInNode(self)
let node = self.nodeAtPoint(location)
//this is for the left turntable
if node.name == "lefttt"
//lets user rotate left turntable when there is one finger on turntable.
let dy = leftTurntable.position.y - location.y
let dx = leftTurntable.position.x - location.x
let angle2 = atan2(dy, dx)
leftTurntable.zRotation = angle2
let delta = (angle2 - previousAngle)
if delta > 0
// Code to rewind music goes here....
print("rotateleft")
else
//This code works perfectly and fast forwards the music when spinning turntable to right
print("rotateright")
musicPlayer.rate = 2.0
musicPlayer.play()
previousAngle = angle2
【问题讨论】:
您是否尝试过将 2.0 添加到 musicPlayer.currentTime 而不是减法?也许它从剩余时间开始倒计时。 是的,我尝试添加,但它仍然快进。 【参考方案1】:您可以通过将currentTime
设置为小于其当前值的值来回退。
我认为这不会以某种可听的方式倒带。你不会神奇地听到音乐倒转或类似的声音。 AVAudioPlayer 不这样做。但是,它会改变播放位置,这样当您再次开始播放(前锋)时,您会比原来的位置更早开始。
AVPlayer(相对于 AVAudioPlayer)可以反向播放,但前提是特定的 AVPlayerItem 允许。
【讨论】:
我告诉你的结果与你在这里得到的问题基本相同:***.com/questions/36587401/… 不要多次问同一个问题,试着听听你的答案给定的。 这个问题是关于倒带,而不是快进。这个问题不是***.com/questions/36587401/… 的重复问题。 OP 显然知道如何快进(根据包含的touchesMoved
方法)
@AleksanderAzizi 这是重复的,因为他已经被告知他不能用 AVAudioPlayer 向后播放。他一直问同样的问题,因为他不接受这个事实。
我现在看到 OP 已多次发布此问题。但是,问题仍然不是重复的,应该标记为已关闭,而不是重复。以上是关于有没有办法在 Swift 中使用 rate 属性来倒带音乐? [复制]的主要内容,如果未能解决你的问题,请参考以下文章