【问题标题】:mousePressed not updating within while loopmousePressed 在 while 循环内不更新
【发布时间】:2019-03-01 09:45:44
【问题描述】:

在处理论坛上发布了这个但没有得到帮助。

我想知道为什么以下方法不起作用:

void setup(){
  size(400,400);
}

void draw(){
  while (true) {
    if (mousePressed == true) {break;}
  }
  println("OK");
}

mousePressed 在单击期间不会更新为true,这意味着绘制循环永远不会打印"OK"。有谁知道为什么会这样?

【问题讨论】:

    标签: processing


    【解决方案1】:

    mousePressed 变量仅在对 draw() 的后续调用之间更新。

    反复测试无法更改的变量总是会失败。

    【讨论】:

    • 所以如果我理解正确的话,mousePressed 函数不是中断,而是在 draw() 开始时执行的轮询?您能否链接到任何描述此内容的文档,因为我的搜索结果为空。
    • 中断由操作系统处理,并通过消息泵发送给程序。诸如处理之类的框架接收这些消息并将它们应用于变量以在每次运行主循环时使用(这对用户来说是隐藏的)。此过程消除了变量中的波动性和并发性问题。我无法找到任何处理特定文件来支持此声明。我花了剩余的时间(几乎一个小时)在源代码中找到对此的引用。你自己的测试应该就够了。
    猜你喜欢
    • 2013-04-03
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2021-12-11
    • 2021-09-18
    相关资源
    最近更新 更多