红点系统的整体思想是:需要检测—纳入监测—检测完了移除。
- 主界面每个图标对应一个红点id。如果一个页面有分页,则每个页签也对应1个红点id。
- 建立一个红点管理器。每个红点id有一个状态和一个检测函数。当一个系统的数据有变化,需要检测一个红点状态的时候,把该红点id加到一个检测列表,每次检测完之后,将该红点id从列表移除。
- 红点的检测采用轮询机制。即在红点管理器里面启用一个秒定时器,每秒遍历上述的列表,依次调用每个红点id对应的检测函数,检测函数的返回值是一个bool值,表示是否显示红点。当红点id的检测函数返回值与红点id原本的状态不一致的时候,会发送一个事件出来。需要显示红点的界面也会监听红点事件以便刷新红点。
这种轮询机制相对于反应机制(数据变化时,立刻检测红点),在应对玩家升级狂点的情况的时候,效率提升了n倍,因为玩家在1秒内狂点了几十次,也只会检测一次。
完。
原文地址:https://blog.51cto.com/zhangzhao/2476304
时间: 2024-10-10 16:23:04