您的位置:首页 > 产品设计 > UI/UE

MyGUI 总结1

2016-05-14 17:53 344 查看
1、
原生列表的功能太薄弱,添加以下功能及实现:

(1)、
不能隐藏表头,遇到预置的表头就悲剧了。 查看源码发现,表头统一由mHeaderPlace控件管理,而列表区(其实就是多个listbox)由mClient管理。于是乎,隐藏表头的函数只需要,设置mHeaderPlace不可见就行。 不过,这里有个问题。mHeaderPlace隐藏了以后,mClient的位置没变。需要设置一下,mClient的位置为表格控件的顶部。同时,为了方便使用,将mClient的高度加上表头控件的高度。

(2)、 要支持在某一项里添加图标的功能,这样表格可以做的更炫酷。首先,观察了一下。表格内部每一项(SubItem)由一个按钮构成。 于是乎,添加一个为子项添加子控件的功能。这个功能写起来就简单粗暴了,调用控件的attachWidget函数链接到按钮上就行。不过,MyGUI的表格为了减少实际分配的控件数,于是乎,listBox之分配能够让用户看到的最少的控件数,比如如果,列表的高度是400,每一项的高度是110那么,每一页最多能够看到5个子项。于是乎,内部就之分配5个按钮。然后,文本内容分开存。需要看到哪些内容就,设置上去。表格每一列使用listbox实现的。所以,也继承了这一特性。但是,对于表格来说,这样开发起来很费劲。尤其需要添加图标的时候,要手动链接上去。为了后续开发能够轻松些。就给改成分配表单项个按钮了(有多少项,分配多少个按钮。)这样修改之后,添加图标直接添加到对应的控件上就行了。
之后,改变列文本颜色,字体大小,行高。都类似修改对应的属性就行。

(3)、
TextBox对中文的一键换行,TextBox原生的一键换行是英文的换行方式——检测空格。英文的句子是由一个单词一个单词。然后,每个单词之间有空格。对英文没啥大问题。但是,中文每个字之间没有空格啊! 所以,要改造改造。直接改成中文的,也不考虑兼容啥的了。有需要,以后把英文的方式加回来,(实际的换行处理放在TextView.updateView函数里)然后,提供接口设置TextBox可以换行。
之后,无意中发现TextBox可以在文本内容里加上颜色标记,比如”你好#00ff00你好“。最终呈现出来,后面的你好就是绿色的。没中文文档太悲催,之前还考虑要不要加个分段颜色功能那。要是想做表情的话也可以这么高,每个表情有自己的标识。QQ里面就是 \ID表格某个表情。

(4)、
MenuControl,菜单,需要添加两行的菜单。 于是乎,添加一个标志位,控制一下。不过,两行菜单只在垂直的时候生效。水平无视。具体做法,就是在计算菜单的宽高的时候,把菜单项平均分配到两边。 然后,宽度变为原来的两倍。照着update函数原来的计算方式模仿一下就收工了。

(5)、 精灵动画,ImageBox的设计很奇葩——自带精灵动画,好蛋疼。
设置ImageResource就行了,当然,首先你得有动画。所以,先用ImageEditor做一个动画进来。然后setImageResource填资源名就行了。想停下来,就设置frameRate为0.0,在设置time到想停的帧。

(6)、 进度条的改造,能够支持,滑块为一张大图,进度用显示这张图的宽度表示。
这个改造的话,利用的父类控件切割子类控件。子类一旦超出父类的区域,超出的部分会隐藏掉。 于是乎,添加一个透明的控件mClipWidget,设置滑块为它的父类。mClipWidget为进度条主客户区的子类。于是乎,进度条移动的时候,设置mClipWidget的宽度就行啦。 至于滑块设置为和进度条的背景等大就行。

(7)、
扩展出一个特殊控件,像列表每段文字以一定的间隔排列。 同时,每个文本过几秒后会淡出然后消失。之后,后一段文字向上移动一个位置这个控件的话,其实用Widget就可以改造。 存一个控件数组,和一个行间距。添加一段消息就隔个行间距后,添加文本。 然后,每段文本添加一个FrameStart事件,实现淡出效果。

(8)、 贴图有黑边,犹豫DX的纹理过滤,导致。当把小图合成一张大图的时候,有可能会取样出奇怪的颜色。
比如可能会有黑边之类的。不过,改成最近点采样又效果太差了。 只能把小图中间隔开,或者少画一圈轮廓边了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: