我目前正在 HTML Canvas 中开发一款游戏。没有外部依赖。它只涉及 HTML 元素 Canvas ,几乎没有其他内容。该游戏没有主动变化的屏幕,因为它是一个商业模拟器。我对游戏开发或编程并不陌生,但对 Canvas 游戏编程很陌生。我的问题是我想通过 Canvas 做所有事情,没有外部元素。我在 Canvas 中制作了自己的按钮,并且仅在单击程序后才尝试检查单击的注册位置,因为我不希望游戏在没有发生单击的情况下不断检查鼠标位置。事件监听器只有在 JavaScript 仍在运行时才起作用吗?无论如何,是否要在主游戏循环中编写类似 psuedocode 的内容
while !exit
if(input)
update();
render();
事件监听器不会像这样显式工作吗,还是我必须这样写
当!退出时
sleep (16.67);
在这种情况下,事件监听器只是主动检查输入,但不是显式检查,其函数会在收到点击时更新?
这就是 Canvas 的工作原理吗?只要程序运行,事件监听器就会不断检查吗?
任何有关如何执行此操作的反馈将不胜感激。我愿意回答任何进一步的问题,以帮助找到答案。谢谢。
最佳答案
JavaScript 不需要循环来监听事件。因此,对于像这样不主动渲染的游戏类型来说,游戏循环是没有用的。我被引导相信事件监听器不起作用,因为我使用了语法 canvas.addEventListener("click", onClick());
这是行不通的,因为如果你特意在函数名后面写了括号,它会调用该函数并且不会添加事件监听器。
因此,对于这样的游戏,您需要将事件监听器(不带括号)挂接到更新函数,而不是使用循环。
关于javascript - HTML Canvas,如何停止程序直到收到 Canvas 上的点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607473/