如何采样信号并将采样值保存在 Elm 中?

How to sampleOn signal and keep the sampled value in Elm?

考虑一个模型:

model : Signal Model

和以下 2 个信号:

clickPosition = Mouse.position
  |> Signal.sampleOn Mouse.clicks

和:

dimensions = Window.dimensions

我想得到以下 desiredSignal:

            (0,0)       (30,20)               (60,70)
clickPosition +------------+---------------------+---------

              M0   M1                  M2     M3
        model +----+-------------------+------+------------

          (600,800)         (400,300)  (200,800)
   dimensions +-----------------+----------+---------------

              D1           D2                    D3
desiredSignal +------------+---------------------+---------


where:

  D1 = ((0,0), M0, (600,800))
  D2 = ((30,20), M1, (600,800))
  D3 = ((60,70), M3, (200,800))

即我想采样 clickPosition,但保留采样值。

我该怎么做?

看起来你的 desiredSignal 是三个信号的最新值,成组,但仅在 clickPosition 信号发生变化时发生变化。您可以通过首先组合它们,然后对 clickPosition 信号进行采样来做到这一点:

desiredSignal =
  Signal.map3 (,,) clickPosition model dimensions
  |> Signal.sampleOn clickPosition