Frage

Ich verwende Avaudioplayer, um einige Audiodateien abzuspielen. Ich habe einige Kontrollen wie Vorwärts und Rückspulen.

Rewind funktioniert ordnungsgemäß, aber nicht.

- (void)rewind
{
    AVAudioPlayer *player = _rewTimer.userInfo;
    player.currentTime-= SKIP_TIME;
    [_rewTimer invalidate];
    _rewTimer=nil;
    [self updateCurrentTime];
}

- (void)ffwd
{
    AVAudioPlayer *player = _ffwTimer.userInfo;
    player.currentTime-= SKIP_TIME;
    [player setCurrentTime:cTime];
    [_ffwTimer invalidate];
    _ffwTimer=nil;

    [self updateCurrentTime];
}

Sobald ich auf die Schaltfläche Weitere klicke, beginnt die Audio -Datei von Anfang an zu spielen.

Ich habe der Beispiel -App Avtouch von Apple gefolgt.

War es hilfreich?

Lösung

Möglicherweise haben Sie die Immobilienerklärung des Avaudioplayer *Players durchgeführt. in der H -Datei und synthetisierte sie auch. Nun für vorwärts, tun Sie einfach,

- (void)ffwd
{
    NSTimeInterval *time = [player currentTime];
    time+=SKIP_TIME;
    [player setCurrentTime:time];    

}

Tun Sie ähnlich für Rückspulen+

ODER

 - (void)ffwd{
    NSTimeInterval time = avPlayer.currentTime;
 time+=SKIP_TIME;
    if (time > avPLayer.duration)
    {
       //nothing to do

    }
    else
        [player setCurrentTime:time];
    }

Dieser scheint der bessere Weg zu sein, auch für Rückspulen im Vergleich zu 0 anstelle von Dauer

Andere Tipps

Die einfachste Erklärung ist das cTime endet entweder größer als die Gesamtzeit der Audiodatei oder es endet irgendwie negativ. Beide veranlassen die Spielerinstanz, ihre festzulegen currentTime Eigenschaft zu Null.

Abgesehen davon denke ich, dass es zerbrechlich ist, den Player in einem Timer -UserFo -Wörterbuch zu haben. Wenn es nicht unbedingt in den Timer eingebettet sein muss, würde ich es in eine Eigenschaft der Klasse verschieben, damit alle Methoden leicht darauf zugreifen können. Der Timer kann die Methoden weiterhin aufrufen, aber Sie werden das Risiko nicht ausführen, dass der Spieler beim Austausch vom Timer in den Timer verloren geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top