2

我正在使用 AVAudioplayer 播放一些音频文件。我有一些控件,例如前进和后退。

倒带工作正常,但前进不正常。

- (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];
}

一旦我单击前进按钮,音频文件就会从头开始播放。

我遵循了 Apple 的示例应用程序 avTouch。

4

2 回答 2

2

你可能已经完成了 AVAudioPlayer *player 的属性声明;在h文件中也合成了。现在前进,做,

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

}

对倒带做类似的事情+

或者

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

    }
    else
        [player setCurrentTime:time];
    }

这似乎是更好的方法,也用于倒带与 0 而不是持续时间相比

于 2010-01-06T03:46:08.177 回答
0

最简单的解释是,cTime结果要么大于音频文件的总时间,要么以某种方式结束。两者都会导致播放器实例将其currentTime属性设置为零。

顺便说一句,我认为将播放器放在计时器的 userInfo 字典中是脆弱的。除非它绝对必须嵌入到计时器中,否则我会将它移动到类的属性中,以便所有方法都可以轻松访问它。计时器仍然可以调用这些方法,但是在从计时器切换到计时器时,您不会冒玩家丢失的风险。

于 2010-01-05T15:30:30.050 回答