Javascript HTML画布,如何停止程序,直到收到画布上的点击?

Javascript HTML画布,如何停止程序,直到收到画布上的点击?,javascript,html,canvas,Javascript,Html,Canvas,我目前正在用HTML画布制作一个游戏。没有外部依赖项。它涉及HTML元素画布,几乎没有其他内容。游戏没有主动改变屏幕,因为它是一个商业模拟器。我对游戏开发或编程并不陌生,但我对画布游戏编程是新手。我的问题是我想在画布上做任何事情,没有外部元素。我在画布中制作了自己的按钮,我试图在程序被点击后查看点击注册的位置,因为我不希望游戏在没有点击的情况下不断检查鼠标位置。事件侦听器是否仅在JavaScript仍在运行时才起作用?在主游戏循环中,是否有任何东西可以写在psuedocode中 while !e

我目前正在用HTML画布制作一个游戏。没有外部依赖项。它涉及HTML元素画布,几乎没有其他内容。游戏没有主动改变屏幕,因为它是一个商业模拟器。我对游戏开发或编程并不陌生,但我对画布游戏编程是新手。我的问题是我想在画布上做任何事情,没有外部元素。我在画布中制作了自己的按钮,我试图在程序被点击后查看点击注册的位置,因为我不希望游戏在没有点击的情况下不断检查鼠标位置。事件侦听器是否仅在JavaScript仍在运行时才起作用?在主游戏循环中,是否有任何东西可以写在psuedocode中

while !exit
     if(input)
        update();
        render();
事件侦听器不是这样显式工作的,还是我必须这样编写

while!出口
睡眠(16.67);
在这种情况下,事件监听器只是在主动检查输入,而不是显式地检查输入,是否有一个函数在收到单击时更新

画布就是这样工作的吗?只要程序在运行,事件监听器就一直在检查吗


任何关于如何进行此操作的反馈都将不胜感激。我愿意回答任何进一步的问题,以帮助找到答案。谢谢。

JavaScript不需要循环来监听事件。因此,对于这样一种没有主动渲染的游戏,游戏循环是无用的。我被引导相信事件监听器没有工作,因为我使用了语法
canvas.addEventListener(“click”,onClick())

这不起作用,因为如果您在函数名后面特别写括号,它将调用函数,并且没有添加事件侦听器

因此,对于这样的游戏,您希望将事件侦听器(不带括号)挂接到更新函数,而不是使用循环

“事件监听器是否仅在JavaScript仍在运行时才工作?”——否。JavaScript(在任何正常情况下)从一开始就不是“持续运行”的。“在主游戏循环中是否仍有写入内容[…]”–不,这样的循环一开始是错误的,它将阻止与页面的任何交互(一段时间后,浏览器将询问用户是否要中止此长时间运行和阻止的脚本)。我认为你需要研究更多关于如何在网页上下文中使用JS和事件的基础知识,你的问题太广泛了。