代码之家  ›  专栏  ›  技术社区  ›  rano

按顺序播放多媒体内容

  •  2
  • rano  · 技术社区  · 14 年前

    嗨,我有一个NSArray包含许多我喜欢称之为“多媒体动作”的对象,它们封装了一些多媒体内容,如电影和照片。我想按顺序“播放”它们,等待每一个结束后再给另一个打电话。

    我已经调用了一个方法,该方法使用NSOperation扫描数组。

    重要提示: 似乎MPMovieController不播放(接口甚至没有出现)是否在NSOperation内部调用。还有其他人遇到过这个问题吗?

    更新 performSelectorOnMainThread: 使MPMoviePlayer按预期工作

    1 回复  |  直到 14 年前
        1
  •  1
  •   rano    14 年前

    这就是我设法找到的解决办法。如果有人感兴趣的话,我就把它贴出来。

    首先我把我所有的“多媒体动作”放在一个 NSOperationQueue 我设置了 maxConcurrentOperationCount

    1. UIAlertViews子类
    2. MPMoviePlayerController类
    3. 后台操作(不涉及多媒体内容的操作,可立即显示在当前视图中)

    前两个我用 NSNotifications 管理队列,因为我不知道内容何时停止播放或将被用户取消(假设通过触摸)。所以对于每一个我:

    • setSuspended:YES
    • 为更正通知添加一个观察者
    • 播放内容
    • 播放完毕后发布通知
    • setSuspended:NO

    对于UIAlertView,通知以 performSelector:withObject:afterDelay: 表示应显示的时间量或双击后的时间量。对于MPMovieController,它将自动启动并命名为 MPMoviePlayerPlaybackDidFinishNotification

    第三类可以是在放入队列的NSInvocationOperation中简单执行的一组指令。因此,我甚至可以创建像“wait”这样的操作,将队列执行挂起几秒钟