代表时间戳

时间:2016-03-13 10:34:38

标签: haskell ghcjs reflex

我想代表来自HTMLMediaElement的时间戳。其定义特征是:

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

我的初步计划是represent it as a Behavior t Double that re-runs the IO Double every time it is observed,但这并没有太好用。

我尝试过的事情:

  • 使用以固定频率在引擎盖下刺激的Behavior,如the workaround section of this question
  • 中所述
  • 传递代表所需采样频率的Event t (),并返回保存重合时间戳的Event t Double

我真的不喜欢 - 第一个将行为(对不起)与我的特定用例结合得太多(如果我使用最终的采样频率,我会在我的app)或者看起来很浪费(如果我在创建Behavior时使用1 kHz采样之类的东西,然后在应用程序端以60 Hz的频率对其进行采样),如果你想做多于一个,那么第二种是非常不灵活的时间戳采用不同采样率的东西。

1 个答案:

答案 0 :(得分:2)

现在,使用Event明确地抽样时间(您的第二个选项)值是您最好的选择。我们尚未创建一种方法来编写Behavior懒惰的外部资源调查,尽管这是我希望我们能够很快完成的事情。

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