问题标签 [elm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
45 浏览

types - 预期类型根据注释切换类型 [Elm]

我有一个编译问题,预期类型有时是 {} 有时是 Game,这取决于我如何更改函数的注释stepGame

变量会发生什么以及输入到底是什么并不重要。运行它会给我:

两者都是游戏类型defaultGamegame所以我觉得这很奇怪。如果我stepGame从以下位置更改注释:

至:

它将给出以下编译错误:

这是预期的和正确的。返回值是 Game 类型,但在我的注释中,我希望是 Int。检查这个和之前的编译错误,我推断出返回值是正确的,但不知何故,它期望函数什么都不返回,而它应该期望一个游戏类型的返回值。

所以我尝试将注释更改为:

这正确地给出了:

所以我的问题是,为什么在我使用时它不期望 Game 类型作为函数返回值:

0 投票
1 回答
306 浏览

keyboard - 创建自定义键盘控件 [Elm]

我正在尝试为 4 人游戏创建自定义键盘控件。现在,密钥是这样预先确定的:

我创建了(为每个玩家)表单的输入:

其他地方的处理程序将根据玩家的需要调整输入的值。但是我很难弄清楚如何将这些值插入到Keyboard.directions.

Keyboard.directions我曾尝试将论点直接提升为:

任何结果都将成为信号的信号,无法GameInput(正确)提升。

我尝试将字符作为参数传递给gameInput

现在gameInput2将有一个信号的信号。

我的最后一个想法是组合信号,但这对我来说似乎不是一种选择,因为我希望一个信号依赖于另一个信号。

0 投票
1 回答
161 浏览

elm - 用其他文本显示信号值

我刚开始学习榆树。在这个程序中,我想使用在某些输出中格式化的鼠标坐标和箭头键状态来更新屏幕。

我的计划是创建一个名为 Input 的记录,并通过函数输入将其设置为 Signals。然后 showGameInputs 将使用 Input 记录来获取值并将它们与一些文本组合以将元素返回给 main。

这是错误:

[1 of 1] 编译 Main ( Functions.elm ) 第 19 行第 23 到 28 列的类型错误:输入

预期类型:信号输入 实际类型:输入

Elm 和函数式编程非常新,所以我怀疑我在这里遗漏了一些基本的东西。

谢谢你的帮助。

0 投票
1 回答
460 浏览

unicode - 箭头键表示为其他东西?[榆树]

这是该主题的后续问题:

创建自定义键盘控件 [Elm]

我正在添加一个允许玩家自定义控件的功能。但是箭头键代表自己的方式真的很奇怪。稍后我会谈到这一点。我所拥有的看起来像这样:

Keyboard.keysDown 我单击按钮时,它们会接收输入。这对于普通的 Char 输入很有效,但是当我想使用符号时,我会得到一些奇怪的东西。我想默认给一个玩家方向键,但由于它必须自定义,我不能使用Keyboard.arrows. 玩家一将拥有:

这取自http://character-code.com/arrows-html-codes.php。这些是箭头键的 html 代码。我在按钮上显示当前键,并且箭头正确显示:

包含pkeys1.up密钥代码。但是,在游戏中箭头键没有响应。这是可以预料的,因为 html 是为布局而制作的,但是当我尝试使用 unicode 时,如http://library.elm-lang.org/catalog/elm-lang-Elm/0.13/Char toCodefromCode所述,键ingame 仍然无法工作,并且我得到一个错误图标,我希望按钮上有箭头符号。这可能是因为 unicode 是十六进制的。

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

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

万一这很重要,我仍在使用 Elm 版本 13。

更新

所以我弄清楚了 KeyCodes 38、40、37 和 39 分别对应于箭头字符(并且显示符号对应于这些相同的值,但在 html 中)。

0 投票
1 回答
72 浏览

keyboard - 模型中的可配置输入(Elm 0.13)

对于我正在开发的 Elm (0.13) 游戏,我希望有可重新配置的输入。我为此得到的模型的简化版本是

对于游戏循环,我使用的是标准foldp结构,我希望输入依赖于游戏的当前状态。到目前为止,我尝试了以下方法:

但当然,输入信号生成函数 ( input : Game -> Signal Input) 继续使用初始游戏,而不是改变的游戏状态。

我已经在整个互联网上搜索以找到解决方案,但我在这个方向上找不到任何东西。有没有办法按照我尝试的方式进行(通过在模型中包含控件),或者我是否必须通过使控件本身发出信号来从模型中释放控件?

0 投票
1 回答
437 浏览

random - 如何在没有信号的情况下在 Elm 0.13 中获取随机数?

我正在制作一个需要在屏幕上绘制随机线条的游戏。现在看来 Random 需要一个信号才能在 0.13 中工作(我们被迫在 0.13 中工作)。那么如何获得这些随机数呢?

我从 elm-lang 网站上提供的游戏骨架开始,得到了这个:

现在在 stepGame 中,我想绘制随机线。问题是我只能通过在 0.13 中提供信号来获得随机浮点数。我在 step 函数附近有输入信号,但是当我将标题更改为 stepGame : Signal Input -> GameState -> GameState让它无法编译时。那么如何在该函数中获取信号以获取一些随机数...我似乎找不到解决方案,这让我发疯。

0 投票
1 回答
228 浏览

user-interface - 如何在 Elm 0.13 中使用字段

我一直在努力让这些领域发挥作用,但一直失败。我也一直在尝试寻找示例,但我能找到的唯一示例是使用 Elm 0.14,它使用 Elm 0.13 中不可用的新 Channel API。

所以我从目录中提供的示例开始

为了使用我尝试过的领域

但我不断收到以下错误

为什么元素不再是信号了......函数定义明确指出它应该输出信号,对吗?现在我将如何输入一个名称,然后我就可以在变量中使用它了?

0 投票
1 回答
66 浏览

events - Elm 0.13 中的字段和事件

这个问题与如何在 Elm 0.13 中使用字段有关(我们正在处理相同的任务)。

就我而言,游戏中的所有变化都应该生成一个事件:

例如,PlayerChanged 事件的生成方式如下:

其中pOne<Direction>pOneColor是下拉菜单的输入,并且pOneName是 Input.Field 的输入:

我在此假设当我更新文本字段(或下拉菜单)时,PlayerChanged [PlayerSettings]将生成一个事件。所有事件组合如下:

最后将事件信号提升到更新函数上:

但是,当游戏暂停时,似乎所有输入都被阻塞,不再传播任何信号。此外,文本字段是不可编辑的。玩家姓名的每个 Input.Field 定义如下:

然后,在视图函数中

对我来说,似乎一切都是正确的。编辑显示的字段时,pOneName.signal会更改,这会导致(通过一系列提升)PlayerChanged生成一个事件,这会导致模型被重绘,这应该显示新的更新。然而,不知何故Input.Field仍然无法编辑。更糟糕的是:即使是一个简单的NewGame事件也不再生成,下拉菜单中的事件也不会传播:没有任何变化。

如果我在游戏模式下开始游戏(因此没有显示输入表单),这工作正常,我可以重置游戏。似乎输入阻塞了事件流,但我不知道哪里出了问题。

0 投票
3 回答
6215 浏览

elm - 有没有办法在 elm 中使用 javascript 库?

我正在和榆树一起工作。我已经阅读了Elm 中的端口以及它们如何帮助在 Elm 和 Javascript 之间共享数据/消息。

我打算使用像moment.js 这样的丰富的日期时间库。建议如何移植 moment.js 或任何其他替代方案?

0 投票
2 回答
401 浏览

elm - 使用 foldp 折叠多个信号

我正在尝试将 foldp 与组合两个信号的输入函数的结果一起使用。

这是我的代码。

我得到的错误是:

在 main 中,我可以用 asText 替换 render 并得到类似的错误,所以我认为即使渲染处理输入可能存在问题,我认为我与 foldp 一起使用的函数也存在问题。