【发布时间】:2015-02-16 10:20:45
【问题描述】:
这是该主题的后续问题:
Creating custom keyboard controls [Elm]
我正在添加一项允许玩家自定义控件的功能。但是箭头键代表自己的方式真的很奇怪。稍后我会谈到这一点。我所拥有的看起来像这样:
ck2up : Input [KeyCode]
ck2up = input [toCode 'W']
ck2down : Input [KeyCode]
ck2down = input [toCode 'S']
ck2left : Input [KeyCode]
ck2left = input [toCode 'A']
ck2right : Input [KeyCode]
ck2right = input [toCode 'D']
他们接收来自Keyboard.keysDown 的输入而我正在单击一个按钮。这对于正常的 Char 输入很有效,但是当我想使用符号时,我会得到一些奇怪的东西。我想默认给一个玩家方向键,但由于它必须自定义,我不能使用Keyboard.arrows。玩家一将拥有:
ck1up : Input [KeyCode]
ck1up = input [8593]
ck1down : Input [KeyCode]
ck1down = input [8595]
ck1left : Input [KeyCode]
ck1left = input [8592]
ck1right : Input [KeyCode]
ck1right = input [8594]
这取自http://character-code.com/arrows-html-codes.php。这些是箭头键的 html 代码。我在我的按钮上显示当前键并且箭头正确显示:
(button ck1up.handle kd (append "up: " (fromList [fromCode pkeys1.up])))
pkeys1.up 包含密钥代码。但是,在游戏中箭头键没有响应。这是意料之中的,因为 html 是为布局而制作的,但是当我尝试使用 unicode 时,如 http://library.elm-lang.org/catalog/elm-lang-Elm/0.13/Char toCode 和 fromCode 所述,游戏中的键仍然不起作用,并且出现错误图标预计按钮上的箭头符号。这可能是因为 unicode 是十六进制的。
但是!我可以使用我新获得的功能来自定义控件,方法是在按下按钮的同时按住键。这确实使我的箭头键起作用,但它显示了以下符号:
up: &
down: (
left: %
right: '
这意味着使我的箭头键起作用的相同 unicode 正在显示这些随机符号。这不是很奇怪吗?如果有人知道我在哪里可以找到 Elm 使用的 unicode 值,那就太好了。如果没有输入任何键,我想将箭头键设置为默认值。是否有任何东西可以将这些 unicode 转换为 html,以便正确显示?
以防万一,我仍在使用 Elm 版本 13。
更新
于是我算出KeyCodes 38、40、37和39分别对应箭头字符(显示符号对应这些相同的值,但在html中)。
【问题讨论】: