2016-04-15 3 views
0

Я быстро переадресую свой AVAudioPlayer, установив значение rate. Однако я не могу понять, как перемотать назад.Есть ли способ перемотки музыки, используя свойство rate в Swift?

Я создаю приложение для ди-джеев, в котором музыкальная игра 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 
} 
+0

Вы пытались добавить 2.0 в musicPlayer.currentTime вместо подстановки? Возможно, он начинает отсчет с оставшегося времени. –

+0

Да, я попытался добавить и все еще быстро вперед. – coding22

ответ

0

Вы можете перемотать, установив currentTime на меньшее значение, чем его текущее значение.

Я не думаю, что это перемотает в некотором звуковой способ. Вы не будете волшебно слышать, как музыка бежит назад или что-то в этом роде. AVAudioPlayer этого не делает. Однако он изменит положение игры, так что, когда вы снова начнете играть (вперед), вы начнете раньше, чем вы были.

AVPlayer (в отличие от AVAudioPlayer) может воспроизводиться в обратном порядке, но только в том случае, если это разрешает конкретный AVPlayerItem.

+1

То, что я вам говорю, оказывается в основном той же информацией, которую вы указали по вашему вопросу здесь: http://stackoverflow.com/questions/36587401/how-do-fastforward-using-avaudioplayer-while-hearing -the-music Вместо того, чтобы задавать один и тот же вопрос несколько раз, попробуйте прослушать ответ, который вы дадите. – matt

+0

Этот вопрос касается перемотки, а не быстрой пересылки. Этот вопрос не является дубликатом http://stackoverflow.com/questions/36587401/how-do-i-fastforward-using-avaudioplayer-while-hearing-the-music. OP явно знает, как ускорить работу вперед (согласно включенному методу 'touchhesMoved') –

+0

@AleksanderAzizi Это дубликат, потому что ему уже сказали, что он не может играть в обратном направлении с помощью AVAudioPlayer. Он продолжает задавать один и тот же вопрос, потому что он не принимает этот факт. – matt