这是本主题的后续问题:
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中)。
答案 0 :(得分:2)
正如您已经知道的那样,关键代码37-40是您需要的。这些也可以在the source code of Keyboard.arrows
中找到。
KeyCode
不仅仅是一些随机名称,而且还提到了JavaScripts正在使用的密钥代码。我无法通过ECMAScript文档中的快速搜索找到定义,其他互联网资源表明浏览器在使用密钥代码时并不总是兼容。所以这是你的标准网络编程混乱,慢慢地处理。尽管如此,这可以说是糟糕的设计,最好继续在邮件列表上进行讨论。