UI层的信息推送,小红点系统
来源:互联网 发布:矩阵的奇异值分解方法 编辑:程序博客网 时间:2024/05/12 15:15
小红点系统
模块预览图:
图1
图2
图1为子层,图2为主层,当子层拥有信息时,往主层通知。思路:子层绑定主层。当消息状态来了,通知主层,主层亮起红点。这就意味着,我们要把这个系统写成树形结构。
首先我们要有个根节点,根节点下有许多子节点,子节点下又会拥有许多子节点。这点必须要清楚。
理清上面关系后,开始整理代码
首先:
我们需要创建和绑定根节点
当我传入的第一个节点是空的,那么默认设置它为根节点,否则就会往它下面增加子节点
再然后就是一个创建普通节点的重载方法
这里我们会通过它的Key去找到对应的父节点,找到后,往父节点下创建子节点。
然后我们的每个节点都会有个小红点,所以我们需要把对应的节点绑定对应的UI。包括节点的获取
public class BaseNode { public string key; public BaseNode parent; public BaseNode rootNode; public bool nodeValue; public bool localValue; public GameObject ui; public List<BaseNode> childNode_list = new List<BaseNode>(); public BaseNode() { } public BaseNode(string urlKey, bool value) { this.key = urlKey; this.nodeValue = value; } /// <summary> /// 根据Key找到父节点 /// </summary> /// <param name="nKey"></param> public void AddChild(BaseNode node) { if (!this.childNode_list.Contains(node)) { this.childNode_list.Add(node); node.parent = this; } this.Update(); } protected void Update() { this.nodeValue = this.localValue; if (!this.localValue) { for (int i = 0; i < this.childNode_list.Count; i++) { this.nodeValue |= this.childNode_list[i].nodeValue; } } UpdateUI(); if (this.parent != null) { this.parent.Update(); } } public void SetValue(bool vals) { this.localValue = vals; Update(); } private void UpdateUI() { if (ui != null) { ui.SetActive(this.nodeValue); } } public void BindUI(GameObject ui) { this.ui = ui; UpdateUI(); } }
上面的代码是节点类,这节点类里面包含它所有的子节点,同理,如果是子节点,那么它也会包含它所有的子节点。
AddChild : 添加节点,当我们需要动态添加节点,可添加进入后调用Update的更新节点
this.localValue : 表示当前节点的状态,true是亮起,false是熄灭。都会调用Update去更新
BindUI:绑定节点对应的小红点,通过 SetValue 来控制状态
大致就是这样,不是很难,当初我竟然想去写二叉树,脑袋秀了
阅读全文
1 0
- UI层的信息推送,小红点系统
- 基于位置服务的信息推送系统设计
- ios的信息推送
- 联通光纤TCP劫持 - 基于策略的宽带信息推送系统
- smartqq的开源机器人实现管理系统信息推送qq群
- 信息推送
- 极光推送,如何接收推送下来的信息。
- iOS系统推送的理解
- 苹果系统的本地推送
- 消息推送系统的设计
- Esper企业版介绍(三)Esper推送服务--从CEP层到WEB层的数据推送
- UI层
- UI层
- Phonegap的本地信息推送插件
- [023] Android平台的信息推送实现
- Android平台的信息推送实现
- [023] Android平台的信息推送实现 .
- openfire推送离线聊天信息的插件
- Python读取excel报Unsupported format, or corrupt file: Expected BOF record; found b'<?xml ve'问题
- 遗传算法入门理解(一)
- Zeppelin源码分析-Interpreter 相关类(2)
- 170802 逆向-RouterScan(6)
- HDU2729 Time to Graduate【状压】
- UI层的信息推送,小红点系统
- Hibernate概述
- 掌握Maven_4
- 处理生成VOC的数据格式的test.txt train.txt trainval.txt val.txt 和SSD的imdb数据格式以及ssd的训练
- linux电源管理
- String
- 【排序算法】基数排序:LSD 与 MSD
- linux常用的正则表达式
- 简单计算器