简介
在写按钮之前,要做很多铺垫的,这也是为后面写更多控件作为铺垫,我们不会一次的把按钮直接写出来,先分析一下,如果将来的控件还有标签,文本框,对话框(这不算控件吧),这些如果都是一个小窗口的话,那么这些东西就都有一个特点,就是都可以当作一个单独的对话框,只是显示的形式不同,所以我先建立一个抽象类,所有控件都继承这个类。
正题
首先看一下这个抽象类需要怎么设计。在设计的时候,我发现,窗口这些都是平面图像,所以,这里类之间的关系设计很重要,所以我们不能太急着把东西写出来,要设计一下(注:博主现在是现场写,事先没有过多的准备),所以我给出如下这个类图,这对于后面的开发很重要。
上图就是我目前对类之间的设计,可能有地方画的不标准,但是设计框架大概就是这样,里面的成员和函数还不全,后面用到的会一点一点添加,这个后续还会修改,所以暂时用这个,下一篇博客中可能会对其有一个小的改动,主要是为了能支持更多的形式和在以后开发中做好铺垫,免得前期设计有重大缺陷,到后面改起来麻烦。
我们会从上面的类一个一个的往下写,看来写到按钮是需要一点时间了,不过大体流程设计好了,写起来就轻松了。下面说说我的设计思路。顶点类,我认为就是一个框架类,图形绘制的时候要有一个框架,也就是这些顶点来支撑,这个将作为控件的框架,控件目前都是2D图像,所以下面有个平面类继承,这个平面类还继承了着色器类,起始我打算还让其继承一个纹理类,但是目前对于纹理类的设计我还在思考中,就暂时不加入这个类,而我没有直接将BaseWidget继承顶点和着色器是想到了可能以后绘制游戏界面的元素人物等都是平面,所以,中间加入这个2DPlane,以便于以后对游戏元素的拓展。之后,各种基本控件,按钮,对话框,等控件都继承BaseWidget。这样逻辑就清晰不少,虽然距离我们的游戏很远,甚至都有些跑偏,但是磨刀不误砍柴功。