【问题标题】:Unable to Implement Forward Action in AVAudioplayer无法在 AVAudioplayer 中实现前向操作
【发布时间】:2010-01-05 14:52:59
【问题描述】:

我正在使用 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。

【问题讨论】:

    标签: iphone avaudioplayer


    【解决方案1】:

    你可能已经完成了属性声明 AVAudioPlayer *播放器; 在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 而不是持续时间相比的倒带

    【讨论】:

    • 还是不行,长按按钮,歌曲会重新开始播放。你知道帽子是问题吗?
    • 你是如何实现这个的,'skip track' 和 'forward' 功能在同一个按钮中,或者你只是想在事件内部进行修饰时转发??
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      相关资源
      最近更新 更多