BlinkState / 离散闪烁状态
BlinkState 表达“可见 / 不可见”两个离散状态。应用在绘制时只查询 isVisible()。
1 |
|
API
start():从可见相位开始闪烁;重复调用不会重启计时。stop():立即停止并切到不可见状态。stopWhenVisible():若当前不可见,则在下一次回到可见相位时停止;若已经可见,则立即停止并保持可见。setInterval(ms):修改切换间隔。运行中调用时,从当前时间重新计时。isVisible()/isRunning():只读查询当前状态。interval():返回归一化后的实际间隔。
间隔会限制在 1..INT32_MAX 毫秒。这样既排除零间隔,也让基于 32 位无符号时间戳的 deadline 比较在回绕前后保持明确。
调度与生命周期
BlinkState 在构造时自动注册到 UiDeadlineScheduler。PixelUI 只在到期且可见性真正翻转时标记 dirty,因此不需要手动 update() 或 continuous draw,tickless 模式也能直接睡到下一次切换。
对象析构时会自动从调度器注销,不需要手工 unregister。因为它内部引用所属的 PixelUI,BlinkState 不能比该 PixelUI 活得更久;把它作为 App 或 Widget 的成员通常最自然。
如果需要连续改变坐标或其他数值,请使用动画系统。BlinkState 只负责离散的显示/隐藏状态。
