UI框架
2015-11-15 15:41
295 查看
1、UI特点:占了项目50%的工作量;技术不难,但它的好坏决定了产品的品质;
有通用的框架,可加快开发进度和提高代码质量,让新人也能很好完成任务;
2、UI的定义:把数据以可视化形式表现出来,采用“基于数据的编程”;
管理所有View:GUIManager类+BasePanel类
每个独立功能模块,推荐使用MVC架构;
3、数据的管理
三种数据:配表、网络协议数据、临时数据(界面、或模块内产生的);
作为MVC架构的一员,通常用类来封装;
UI只是数据的可视化而已,一切UI操作都围绕它们进行;
4、(一)统一管理所有View:GUIManager类+BasePanel类
GUIManager类是个单例,它有大量成员变量,可记录一些状态信息(使用“基于状态机”的编程);
每个View的行为都会影响到BasePanel类,而在BasePanel内部调用GUIManager的接口,
这样就可以通过GUIManager记录所有UI状态并管理它们,例如curPanel_id, lastPanel_id等;
5、(二)UI工具类、工具函数封装
1)应该有guiToos目录,封装了一些类、函数,方便快速代码迭代
2)内容:适配、UI分层
6、(三)MVC架构
M:类封装,该类定义了数据结构、数据的处理(增删查改);
类的子对象保存到Controller里;
临时数据可直接保存在对应View类里;
V:每个Panel封装为一个类,管理该界面的一切逻辑;
建议封装一个BasePanel类,所有界面都继承它
C:对内管理整个模块运作,有M、V类对象做成员变量;
对外提供操作接口,有一系列public成员函数
7、View的封装
1)有BasePanel类,所有界面View都继承它,它有两个作用:
封装一些通用功能、接口,例如:资源加载、显示、销毁;
便于管理所有UI;
2)每个View类都有一套通用模板,可加快开发效率
8、View类通用模板(规则)
1)使用“基于数据”的编程
2)三大操作:创建界面、数据显示、数据操作
3)创建界面createPanel
<1>只创建静态界面,不赋值,与数据无关;
<2>使用“界面布局法”,例如左右结构-createPanel(){createLeftPanel(); createRightPanel();}
<3>单例工厂类ComponentFactory创建各种组件:因为组件就10几种(按钮、label、滚动条等)
<4>大量同类型组件的处理:例如背包上各种格子,没必要每个都创建;
第一个GO对象:在createPanel()里创建
其它对象可通过实例化创建:GO2=GameObject.Instantial(GO)
实例化的地方:若数量少且与数据关系不大 —— 在createPanel(),例如5颗星星;
否则,在refreshPanel(),例如背包物品
4)数据显示refreshPanel
<1>两大操作:动态组件的赋值 + 动态创建(针对那些根据数据情况而创建的原件)
<2>显示更新分两种:全局更新、局部更新(节省性能)
5)数据操作:玩家点击事件的处理
<1>两大操作:数据更新、刷新面板refreshPanel
6)代码模板可参考博客“View类通用模板”
有通用的框架,可加快开发进度和提高代码质量,让新人也能很好完成任务;
2、UI的定义:把数据以可视化形式表现出来,采用“基于数据的编程”;
管理所有View:GUIManager类+BasePanel类
每个独立功能模块,推荐使用MVC架构;
3、数据的管理
三种数据:配表、网络协议数据、临时数据(界面、或模块内产生的);
作为MVC架构的一员,通常用类来封装;
UI只是数据的可视化而已,一切UI操作都围绕它们进行;
4、(一)统一管理所有View:GUIManager类+BasePanel类
GUIManager类是个单例,它有大量成员变量,可记录一些状态信息(使用“基于状态机”的编程);
每个View的行为都会影响到BasePanel类,而在BasePanel内部调用GUIManager的接口,
这样就可以通过GUIManager记录所有UI状态并管理它们,例如curPanel_id, lastPanel_id等;
5、(二)UI工具类、工具函数封装
1)应该有guiToos目录,封装了一些类、函数,方便快速代码迭代
2)内容:适配、UI分层
6、(三)MVC架构
M:类封装,该类定义了数据结构、数据的处理(增删查改);
类的子对象保存到Controller里;
临时数据可直接保存在对应View类里;
V:每个Panel封装为一个类,管理该界面的一切逻辑;
建议封装一个BasePanel类,所有界面都继承它
C:对内管理整个模块运作,有M、V类对象做成员变量;
对外提供操作接口,有一系列public成员函数
7、View的封装
1)有BasePanel类,所有界面View都继承它,它有两个作用:
封装一些通用功能、接口,例如:资源加载、显示、销毁;
便于管理所有UI;
2)每个View类都有一套通用模板,可加快开发效率
8、View类通用模板(规则)
1)使用“基于数据”的编程
2)三大操作:创建界面、数据显示、数据操作
3)创建界面createPanel
<1>只创建静态界面,不赋值,与数据无关;
<2>使用“界面布局法”,例如左右结构-createPanel(){createLeftPanel(); createRightPanel();}
<3>单例工厂类ComponentFactory创建各种组件:因为组件就10几种(按钮、label、滚动条等)
<4>大量同类型组件的处理:例如背包上各种格子,没必要每个都创建;
第一个GO对象:在createPanel()里创建
其它对象可通过实例化创建:GO2=GameObject.Instantial(GO)
实例化的地方:若数量少且与数据关系不大 —— 在createPanel(),例如5颗星星;
否则,在refreshPanel(),例如背包物品
4)数据显示refreshPanel
<1>两大操作:动态组件的赋值 + 动态创建(针对那些根据数据情况而创建的原件)
<2>显示更新分两种:全局更新、局部更新(节省性能)
5)数据操作:玩家点击事件的处理
<1>两大操作:数据更新、刷新面板refreshPanel
6)代码模板可参考博客“View类通用模板”
相关文章推荐
- Java中AWT,Swing与SWT三大GUI技术的原理与效率区别
- Fruit Ninja(树状数组+思维)
- C#实现SQLSERVER数据库中有序GUID生成(NewSequentialId)
- 用soapUI测试webservice
- UILabel标签
- UI之区头表头区尾表尾快速定位A—Z
- UI之搜索框的创建Search
- UI之CustomTableViewcell自定义cell(用xib)
- UI之单个表视图的移动插入和删除
- UI之Tableviewcell
- UI之uiScrollView and uipageControl
- UI之tabBarItem
- UI之把一个控件在屏幕内做任意拖拽并得到时时坐标
- UI之摇晃手机和触摸手势
- UIBarButtonItem改变系统rightbutton和leftbutton的位置
- UI之textField文本框
- Android线程间通信(二):MessageQueue(上)
- UIbutton
- UITabBarController简单介绍
- dojo/io-query源码解析