2015-11-04 63 views
1

考虑一个模型:如何采样信号并保持采样值在Elm?

model : Signal Model 

并将下列信号:

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,但保留采样值。

我该怎么做?

回答

3

它看起来像你的desiredSignal是三个信号的最新值,tupled,但只是改变从clickPosition信号的变化。你可以先将它们合并,然后在clickPosition信号上取样:

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

啊哈!出于某种原因,我认为如果我采样'clickPosition',那么它不应该参与映射。现在感觉非常完美,谢谢! –