2016-04-15 12 views
0

Ich bin schnell Forwarding meine AVAudioPlayer durch Einstellung der rate Wert. Ich kann jedoch nicht herausfinden, wie ich zurückspulen soll.Gibt es eine Möglichkeit, Musik mit der Eigenschaft rate in Swift zurückzuspulen?

Ich mache eine DJ-App, wo sich die Musik rate beim Drehen des Plattenspielers ändert, wodurch die Musik vor- und zurückgespult wird (während der Ton noch zu hören ist).

Dies ist meine aktuelle Methode für das Drehtellerdrehen. Wie kann ich die AVAudioPlayer zurückspulen?

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

Haben Sie versucht, 2.0 anstelle von Subtraktion zu musicPlayer.currentTime hinzuzufügen? Vielleicht beginnt es von der verbleibenden Zeit herunterzuzählen. –

+0

Ja ich habe versucht, hinzuzufügen und es immer noch schnell vorwärts. – coding22

Antwort

0

können Sie zurückspulen, indem Sie den currentTime auf einen Wert kleiner als der aktuelle Wert.

Ich glaube nicht, dass dies in einigen hörbar Weg zurückspulen wird. Du wirst nicht magisch hören, wie die Musik rückwärts läuft oder so. AVAudioPlayer macht das nicht. Es wird jedoch die Spielposition ändern, so dass Sie, wenn Sie wieder anfangen zu spielen (vorwärts), früher anfangen als dort, wo Sie waren.

AVPlayer (im Gegensatz zu AVAudioPlayer) kann rückwärts abspielen, aber nur, wenn das bestimmte AVPlayerItem es zulässt.

+1

Was ich Ihnen erzähle, entpuppt sich im Grunde genommen als die gleichen Informationen, die Sie zu Ihrer Frage hier bekommen haben: http://stackoverflow.com/questions/36587401/how-do-i-fastforward-using-avaudioplayer-while-hearing -the-music Anstatt die gleiche Frage mehrmals zu stellen, versuche, die Antwort zu hören, die du erhältst. – matt

+0

Bei dieser Frage geht es um das Zurückspulen, nicht um eine schnelle Weiterleitung. Diese Frage ist kein Duplikat von http://stackoverflow.com/questions/36587401/how-do-i-fastforward-using-avaudioplayer-while-hearing-the-music. OP weiß offensichtlich wie man vorspult (nach der beinhalteten 'touchesMoved' Methode) –

+0

@AleksanderAzici Es ist ein Duplikat, da ihm bereits gesagt wurde, dass er mit einem AVAudioPlayer nicht rückwärts spielen kann. Er stellt die gleiche Frage, weil er diese Tatsache nicht akzeptiert. – matt