OpenGL游戏制作之路[第八篇 游戏内对话框(1)]---2D游戏---(注:此版本作者处于探索阶段,希望能得到读者的指教和建议)

前言

之前发现了一个问题,就是编辑好的地图没办法保存,所以就添加了一个保存按钮,然后问题又来了,地图文件要有文件名,所以我打算把保存的方式写成像windows保存文件那样,至少有个地方能输入文件名就行了,所以我意识到了,我需要写一个对话框,然后在对话框上面还要有编辑框等控件,想想都头疼,还是动手写吧。

正题

先设计我们的窗口需要什么,一个图片作为窗体,需要动手PS一个了,还要有个标题栏什么的,可以点击拖动,剩下的就是上面的按钮了,因为是游戏内的窗口,右上角就一个关闭键吧。

首先,我制作了一个窗体图片,用来显示窗体。

然后设计了一个GLDialog类,其实就是直接从GLBaseWidget继承过来,里面加了点东西。

class GLDialog:public GLBaseWidget
{
	bool display = false;
public:
	GLDialog();
	GLint ex=0,ey=0;
	bool clickFirst = true;
	void Display(){display = true;}
	void Hide(){display = false;}
	virtual void draw();
	~GLDialog();

};

Display和Hide不多说了,ex,ey是记录鼠标到中心位置距离的,这样鼠标点窗体的任意一个位置都可以移动,并且不会突然跳动。clickfirst是检测窗体是不是被单机一次,单机的话就计算鼠标距离窗体中心的距离,释放之后距离归零。为了避免窗体显示的时候单机窗体会影响窗体后面的元素,所以在场景内添加了一个focus来记录目前鼠标响应在哪个控件上,就像电脑窗口那样,点击谁,就作用在谁身上,但是目前只是实现了可以区分作用在谁身上,还不支持点击谁就是谁。

显示个窗口还是很容易的,就是控制逻辑要好好思考一下。

这里只是一个雏形,下回再丰富一下。

源码

本次的源码和文件

发布了64 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ARTELE/article/details/88891460