键盘按键信号丢失
Keyboard keyup signal missing
我需要键盘按键信号。但是由于游戏状态变化非常快(暂停和播放),STD 库只有 keydown 导致我的程序 "freezes" 。如何解决?
查看 elm-signal-extra 包:http://package.elm-lang.org/packages/Apanatshka/elm-signal-extra/3.3.1
具体来说,有一个函数Signal.Discrete.whenChangeTo : a -> Signal a -> EventSource
(EventSource
是Signal ()
的类型别名)
每次按下 Enter 键时,以下程序将在屏幕上显示 True
500 毫秒:
import Text (asText)
import Keyboard
import Signal
import Signal.Discrete (whenChangeTo)
import Signal.Time (since)
enterKeyUp = whenChangeTo False (Keyboard.isDown 13)
main = Signal.map asText (since 500 enterKeyUp)
已编辑:
我添加了 since 500 enterKeyUp
只是为了方便查看 enterKeyUp
信号是否正常工作。这是另一个示例,展示了如何在没有 500 毫秒部分的情况下使用它。它显示回车键被释放的次数:
import Text (asText)
import Keyboard
import Signal
import Signal.Discrete (whenChangeTo)
import Signal.Time (since)
enterKeyUp = whenChangeTo False (Keyboard.isDown 13)
count : Signal a -> Signal Int
count signal = foldp (\_ x -> x + 1) 0 signal
main = Signal.map asText (count enterKeyUp)
我需要键盘按键信号。但是由于游戏状态变化非常快(暂停和播放),STD 库只有 keydown 导致我的程序 "freezes" 。如何解决?
查看 elm-signal-extra 包:http://package.elm-lang.org/packages/Apanatshka/elm-signal-extra/3.3.1
具体来说,有一个函数Signal.Discrete.whenChangeTo : a -> Signal a -> EventSource
(EventSource
是Signal ()
的类型别名)
每次按下 Enter 键时,以下程序将在屏幕上显示 True
500 毫秒:
import Text (asText)
import Keyboard
import Signal
import Signal.Discrete (whenChangeTo)
import Signal.Time (since)
enterKeyUp = whenChangeTo False (Keyboard.isDown 13)
main = Signal.map asText (since 500 enterKeyUp)
已编辑:
我添加了 since 500 enterKeyUp
只是为了方便查看 enterKeyUp
信号是否正常工作。这是另一个示例,展示了如何在没有 500 毫秒部分的情况下使用它。它显示回车键被释放的次数:
import Text (asText)
import Keyboard
import Signal
import Signal.Discrete (whenChangeTo)
import Signal.Time (since)
enterKeyUp = whenChangeTo False (Keyboard.isDown 13)
count : Signal a -> Signal Int
count signal = foldp (\_ x -> x + 1) 0 signal
main = Signal.map asText (count enterKeyUp)