Javascript 在使用JS编译的Kotlin编程时,尝试在画布元素上移动圆时遇到问题

Javascript 在使用JS编译的Kotlin编程时,尝试在画布元素上移动圆时遇到问题,javascript,web,canvas,kotlin,kotlin-js,Javascript,Web,Canvas,Kotlin,Kotlin Js,我正在构建一个非常简单的基于web的“突破”,在尝试使球在画布元素上移动时遇到了麻烦。我确实用javascript启动并运行了这个游戏。问题是,我现在正试图将它移植到Kotlin(javascript编译)。即使在做了我认为必要的调整之后,球还是不会移动 我在类型方面也有问题(这就是为什么你会看到“*1.0”随处可见),因为我无法将int转换为double,但我不会说这是问题所在。此外,IDE显示了一条我不熟悉的评论。我在关于错误消息的一节中谈到了这一点,但消息如下:“包装到引用对象中,当在闭包

我正在构建一个非常简单的基于web的“突破”,在尝试使球在画布元素上移动时遇到了麻烦。我确实用javascript启动并运行了这个游戏。问题是,我现在正试图将它移植到Kotlin(javascript编译)。即使在做了我认为必要的调整之后,球还是不会移动

我在类型方面也有问题(这就是为什么你会看到“*1.0”随处可见),因为我无法将int转换为double,但我不会说这是问题所在。此外,IDE显示了一条我不熟悉的评论。我在关于错误消息的一节中谈到了这一点,但消息如下:“包装到引用对象中,当在闭包中捕获时将进行修改”

我不确定问题到底出在哪里,但到目前为止,我已经尝试: -我的“setInterval”呼叫的其他签名 -重新格式化程序,使我的代码位于main()中,以避免返回和'val canvas=initializeCanvas()'调用

预期的输出是球向画布右上角移动,然后消失在墙中,因为我还没有实现碰撞

正如我所说,电流输出是一个静态球

至于错误消息,则没有。但是一个“IDE笔记”一直困扰着我。在我提供的代码中,在draw函数中,我增加x和y。当我将鼠标悬停在它们上方时,intellij说它们“被包装到引用对象中,当在闭包中捕获时将被修改”。我以前从未见过这样的警告,而且网络搜索也没有什么成果

包装到引用对象中,当在 关闭

这仅仅意味着您必须将要执行的方法-draw-封装在闭包中。如果没有,它将只调用一次

所以只要改变就行了

window.setInterval(draw(), 10)


不确定kotlin是什么,但在js中这个
窗口。setInterval(draw(),10)
应该是这个
窗口。setInterval(draw,10)
或者更好地使用
requestAnimationFrame
@Xesenix我已经尝试过在没有括号的情况下使用
setInterval(draw,10)
,但是intellij不允许,警告我“函数调用draw()在本例中,kotlin的语法似乎比js复杂:)就是这样!非常感谢你,我这么多年都没想到!没问题@luislyra-很高兴我能帮上忙!
window.setInterval(draw(), 10)
window.setInterval( { draw() }, 10)