3

我想代表来自HTMLMediaElement. 它的定义特征是:

  • 它的值表示为Double
  • 可以随时使用getCurrentTime :: IO Double(部分应用于给定的HTMLMediaElement)查询它
  • 它可能会不断变化(无论何时播放媒体播放器)

我最初的计划是将其表示为每次观察时都会Behavior t Double重新运行IO Double,但效果并不好。

我尝试过的事情:

  • 如本问题的解决方法部分所述,使用Behavior以固定频率在引擎盖下刺激的
  • 传递一个Event t ()表示所需采样频率的,并返回一个Event t Double包含重合时间戳的

我也不喜欢——第一个要么将行为(抱歉)与我的特定用例(如果我使用我将在我的应用程序中使用的最终采样频率)过度结合,要么看起来很浪费(如果我使用某些东西)就像创建时的 1 kHz 采样Behavior,然后在应用程序端以 60 Hz 采样),如果您想以不同的采样率对时间戳做不止一件事,第二个是非常不灵活的。

4

1 回答 1

2

现在,使用一个Event显式采样时间(您的第二个选项)值是您最好的选择。我们还没有创建一种方法来编写Behavior懒惰地轮询外部资源的 s,尽管我希望我们能够尽快完成。

请记住,使用第二个选项,您不一定需要使用特定的采样率;相反,您可以按需抽样,甚至可以让多个地点进行抽样。它并不完美,但我希望这能让你完成工作!

于 2016-03-21T16:15:43.447 回答