键盘键盘信号丢失

ros*_*ree 3 elm elm-signal

我需要键盘键盘信号.但是由于快速变化的游戏状态(暂停和播放),STD库只有keydown导致我的程序"冻结".怎么解决?

dea*_*dpa 5

查看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 ())

True每次在Enter键上有一个键盘时,以下程序将在屏幕上显示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)
Run Code Online (Sandbox Code Playgroud)

编辑:

我添加了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)
Run Code Online (Sandbox Code Playgroud)