Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 无法在AVAudioplayer中执行转发操作_Iphone_Avaudioplayer - Fatal编程技术网

Iphone 无法在AVAudioplayer中执行转发操作

Iphone 无法在AVAudioplayer中执行转发操作,iphone,avaudioplayer,Iphone,Avaudioplayer,我正在使用AVAudioplayer播放一些音频文件。我有一些控制像前进和后退 倒带功能正常,但前进功能不正常 - (void)rewind { AVAudioPlayer *player = _rewTimer.userInfo; player.currentTime-= SKIP_TIME; [_rewTimer invalidate]; _rewTimer=nil; [self updateCurrentTime]; } - (void)ffwd

我正在使用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];
}
只要我点击“前进”按钮,音频文件就从一开始播放


我遵循了苹果公司的示例应用程序avTouch。

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


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

您可能已经完成了的属性声明 AVAudioPlayer*播放器; 在h文件中,并将其合成。 现在,对于forward,只需这样做

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

}
倒带时也要这样做+


这似乎是一种更好的方法,与0(而不是持续时间)相比,倒带也是如此。它仍然不起作用,如果长时间单击按钮,歌曲将在开始时重新播放。你知道问题出在哪里吗?你是如何实现这一点的,“跳过音轨”和“前进”功能在同一个按钮中,还是你只想在活动内部进行润色时前进??
 - (void)ffwd{
    NSTimeInterval time = avPlayer.currentTime;
 time+=SKIP_TIME;
    if (time > avPLayer.duration)
    {
       //nothing to do

    }
    else
        [player setCurrentTime:time];
    }