Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elm 键盘按键信号丢失_Elm_Elm Signal - Fatal编程技术网

Elm 键盘按键信号丢失

Elm 键盘按键信号丢失,elm,elm-signal,Elm,Elm Signal,我需要键盘按键信号。但是STD库只有按键功能,由于游戏状态的快速变化(暂停和玩),导致我的程序“冻结”。如何解决此问题?查看elm信号额外包: 具体来说,有一个函数Signal.Discrete.when更改为:a->Signal a->EventSource(EventSource是Signal()的类型别名) 以下程序将在屏幕上显示True,每次按下Enter键后500毫秒: import Text (asText) import Keyboard import Signal import

我需要键盘按键信号。但是STD库只有按键功能,由于游戏状态的快速变化(暂停和玩),导致我的程序“冻结”。如何解决此问题?

查看elm信号额外包:

具体来说,有一个函数
Signal.Discrete.when更改为: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)
编辑:

我添加了
since 500 enterKeyUp
,这是一个很容易看到
enterKeyUp
信号正在工作的视觉效果。下面是另一个示例,演示如何在没有500毫秒部件的情况下使用它。它显示释放enter键的次数:

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)

是的,我的
信号。离散的
模块有一个用例:)这就是我写那篇文章时的想法,很高兴看到它确实很受欢迎。但是,当我不想要500毫秒的时候,怎么做呢?只需删除
自500以来的
enterKeyUp
信号已经是一个信号,每次释放回车键时都会触发。