【问题标题】:arrow keys represented as something else? [elm]箭头键表示为其他东西? [榆树]
【发布时间】: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 toCodefromCode 所述,游戏中的键仍然不起作用,并且出现错误图标预计按钮上的箭头符号。这可能是因为 unicode 是十六进制的。

但是!我可以使用我新获得的功能来自定义控件,方法是在按下按钮的同时按住键。这确实使我的箭头键起作用,但它显示了以下符号:

up: &
down: (
left: %
right: '

这意味着使我的箭头键起作用的相同 unicode 正在显示这些随机符号。这不是很奇怪吗?如果有人知道我在哪里可以找到 Elm 使用的 unicode 值,那就太好了。如果没有输入任何键,我想将箭头键设置为默认值。是否有任何东西可以将这些 un​​icode 转换为 html,以便正确显示?

以防万一,我仍在使用 Elm 版本 13。

更新

于是我算出KeyCodes 38、40、37和39分别对应箭头字符(显示符号对应这些相同的值,但在html中)。

【问题讨论】:

    标签: unicode keyboard elm


    【解决方案1】:

    您已经知道,您需要的是 37-40 键码。这些也可以在the source code of Keyboard.arrows 中找到。

    KeyCode 不只是一些随机名称,而是暗示正在使用的 JavaScript 键码。我无法通过快速搜索在 ECMAScript 文档中找到定义,其他互联网资源表明浏览器在使用键码时并不总是兼容。所以这是你的标准网络编程混乱,它变得越来越容易处理。不过,这可能会渗透到 Elm 中,这可以说是糟糕的设计,最好在邮件列表上继续讨论。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多