如何采样信号并将采样值保存在 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
考虑一个模型:
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