在模态运算符中,行:
self._timer = wm.event_timer_add(0.1, window=context.window)
从文档 - time_step(在 [0, inf] 中浮动(– 时间步长,计时器事件之间的间隔(以秒为单位(
但是,将 0.1 更改为 1 或 500 没有视觉效果。
这是一个错误,还是我理解不正确的用法?
您可以从中得出的结论取决于您如何衡量结果。
碰巧模态运算符提供了一个 Event 对象,该对象负责管理各种事件,而不仅仅是计时器,因此该对象也会对所有用户输入做出反应,并在检测到新事件时调用模态函数。
错误的是假设因为为运算符设置了一个计时器,所以只有在生成计时器事件时才会调用模态函数。
模态函数将在所有可能的事件上调用。即使只移动鼠标,也会有事件传递给模态函数。
"time_step"参数按预期工作,但您必须从模态函数中的所有其他可能事件中过滤计时器事件,以确保仅引用计时器事件。通过这种方式,您可以准确了解调用函数所需的时间,而不是使用误报进行测量。
要过滤计时器事件,只需在模态函数中使用它:
if event.type == "TIMER":
# your code() to execute on timer events
作为最佳实践建议,尝试将模态函数的使用保留给所有事件决策,包括何时取消或成功完成正在运行的运算符。
切勿在模态函数中包含与事件无关的代码,否则当您有一点复杂性时,您会发现它疯狂地增长。