javascript - HTML Canvas,如何停止程序直到收到 Canvas 上的点击?

标签 javascript html canvas

我目前正在 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/

相关文章:

html - bootstrap 2.3.1 段落旁边的图像

android - 如何在 Jetpack Compose Canvas 中绘制圆角多边形?

javascript - 应该在 ctx.lineTo 之前使用 ctx.moveTo

javascript - 如何防止 StencilJs 中禁用按钮的 onClick

python - 无法仅获取 1 次出现的链接

javascript - NodeJS MySQL 如何获取查询函数之外的结果

html - 尝试将鼠标悬停在显示照片时如何停止闪烁背景

javascript - HTML5 Canvas 位于列表内,无法在所有列表上绘制图像

javascript - 使用 javascript 更改字符串

javascript - 鼠标悬停/鼠标移出时