更改对象的时间框属性,然后执行操作

Timebox property change for an object and then take action

提问人:Pulkit 提问时间:8/15/2023 更新时间:8/15/2023 访问量:23

问:

我有一个无法破解的问题,我正在寻找您编码天才的指点:)

问题

我有一个事件,假设当调用者为了我们的问题而采取某些操作时,该事件被触发,假设每当用户按下键盘上的任何键或移动鼠标时,我们都需要触发Event1Event1

class Event1 {
...
    public Event1(String name) {
    }
}


class Runner {

   public static void main(String arg[]){
      while(true) {
          //User enters some text via command line or moves mouse
          Fire(new Event1("key up"));
      }
   }
   private static Fire(Event1 event){
      //Calls some external api
   }
}

如果用户连续键入,我们最终每分钟将触发 100 个事件。我想做的是时间盒更改,即当我检测到用户将输入机制从键盘更改为鼠标时,反之亦然,我会触发事件。我还添加了一些示例,这些示例说明了何时触发事件是理想的。

|Event| Keyboard| Mouse   | Keyboard | Mouse   | Keyboard | Keyboard |  Mouse   | Keyboard |
|----| -------- | ------- | -------- | ------- | -------- | -------- | -------- | -------- |
|Time| 12:00:00 |12:00:01 | 12:00:02 |12:00:03 | 12:00:06 | 12:00:07 | 12:00:09 | 12:00:11 | 
|----| -------- | ------- | -------- | ------- | -------- | -------- | -------- | -------- |
|Fire| True     | False   | False   | True    | True     | False    | True     | True     |

我可以跟踪事件类型并确定是否相同,然后不触发事件,但我无法解决输入机制频繁变化的闪烁问题。prevcurrent

仅供参考:如果这很重要,我正在使用 Csharp 语言:)

Java C# 事件 闪烁 时间框

评论

1赞 Fildor 8/15/2023
如果是 C#,那为什么要标记 Java?
0赞 Fildor 8/15/2023
另外:定义“闪烁”。而且:这个例子我不清楚。什么会触发,什么不会?我没有看到一个清晰的模式。
0赞 Pulkit 8/16/2023
我不是在寻找确切的代码示例,更像是一般方法。闪烁:与其在收到事件时触发事件,不如分析它们,然后采取行动。例如,如果您收到 4 个连续事件,例如键盘/鼠标/键盘/鼠标,那么只触发 2 个事件(1 个用于键盘,另一个用于鼠标)是有意义的。我希望这是有道理的?
0赞 ssis_ssiSucks 8/16/2023
我仍然不明白“闪烁”。这是你自己定义的术语吗?如果你看一下SO上标记为“闪烁”的其他问题,你会发现它们与屏幕渲染/绘画有关。另外,如果已经知道如何有条件地不触发事件,为什么你不能决定何时触发它呢?

答: 暂无答案