4
據我所知,一個完整的點擊事件是一個按鈕,並且沒有鼠標移動。 SDL僅向我提供Button Up和Down事件。帶反應香蕉和SDL的完全點擊/ KeyPress事件
請問reactive-banana
有什麼方法可以表達「關鍵然後鍵入」?順便說一句,如果我想要一個事件說「鍵仍然關閉」,我必須啓用SDL的enableKeyRepeat
,以便再次觸發keyDown事件。如何在FRP中正確表達?
據我所知,一個完整的點擊事件是一個按鈕,並且沒有鼠標移動。 SDL僅向我提供Button Up和Down事件。帶反應香蕉和SDL的完全點擊/ KeyPress事件
請問reactive-banana
有什麼方法可以表達「關鍵然後鍵入」?順便說一句,如果我想要一個事件說「鍵仍然關閉」,我必須啓用SDL的enableKeyRepeat
,以便再次觸發keyDown事件。如何在FRP中正確表達?
我想嘗試這樣的事:
定義了效用函數(未經測試):
successive :: (a -> a -> Maybe b) -> Event t a -> Event t b
successive f e = filterJust (b <@> e)
where b = stepper (const Nothing) (f <$> e)
,然後使用類似
successive (\previous current -> if previous == buttonDown && current == buttonUp
then Just()
else Nothing)
buttonEvents
(僞代碼,因爲我不熟悉SDL)。
這應該起作用,因爲在事件發生後行爲會部分地更新。
只有當這些事件相互正確時,它們纔會起作用,而不是介於兩者之間? – Lanbo
是的。如果需要,可以使用'filterE'過濾掉不應該影響點擊檢測的事件。 – dave4420
'previous'是在前一個事件中傳遞的值,'current'是在當前事件中傳遞的值。 – dave4420