CEGUI编程问题:用CEGUI实现点击指定文字识别编程发生指定事件,就像游戏里的任务栏一样,点击任务名就会去做任务

阅读(1534)
Copyright & 征
Powered by:
模板提供:CEGUI(17)
CEGUI学习笔记六-- 使用CEGUI解决具体问题
本文讲述了如何实现以下几个具体问题:1、设置控件的背景为透明。2、以D3D9为渲染层的时候,Tooltip工作不正常(一闪而过)。3、模拟MessageBox。
1、设置控件的背景为透明
有3种方法来解决这个问题:
1、修改Imageset文件,提供相关的透明位图;修改Looknfeel文件,使用透明位图进行绘制;修改Scheme文件,使用新的外观配置。
2、在程序里写如下代码:
d_framewindow-&setProperty("FrameEnabled","false");d_framewindow-&setProperty("BackgroundEnabled","false");
3、在LayoutEdit 中配置对象的FrameEnabled,和BackgroundEnabled属性都为false。
2、以D3D9为渲染层的时候,Tooltip工作不正常(一闪而过)。
该问题是BUG引起的,但不是CEGUI本身的问题。
出问题的语句在CEGuiD3D9BaseApplication.cpp中的这句:
guiSystem.injectTimePulse(GetTickCount()&-&d_lastTime);
明显是个有问题的语句。。。。这句话导致CEGUI内部的时间流逝记数完全是个乱的....并且比现实至少快1000倍。Tooltip默认显示7.5秒,7.5S * 000.1 = 7.5ns,所以显示的时候一闪而过。
unsigned&int&time_diff&=&GetTickCount()&-&d_lastTd_lastTime&=&GetTickCount();guiSystem.injectTimePulse(&time_diff&*&<SPAN style="COLOR: #.001f)
而以OpenGL或者OGRE的渲染层则不会出现这个问题。
3、模拟MessageBox
&1、使用LayoutEdit 搭建一个MessageBox,然后在程序的适当位置加入如下代码:
bool&handleMessageBoxBtnOKClicked(&const&CEGUI::EventArgs&&args);void&CEGUI_MessageBox();bool&handleMessageBoxBtnOKClicked(&const&CEGUI::EventArgs&&args)...{&&&&using&namespace&CEGUI;&&&&const&WindowEvetArgs&&WindowArgs&=&static_cast&const&WindowEventArgs&&(args);&&&&WindowArgs.window-&getParent()-&setModalState(false);&&&&WindowArgs.window-&getParent()-&setVisible(false);&&&&WindowArgs.window-&getParent()-&destroy();&&&}void&CEGUI_MessageBox(const&CEGUI::String&&layoutfileName)...{&&&&using&namespace&CEGUI;&&&&//&读取MessageBox的布局文件&&&&Window*&msgbox&=&CEGUI::WindowManager::getSingleton().loadWindowLayout(&layoutfileName&);&&&&//&注册MessageBox的按钮事件&&&&msgbox-&getChild("Frame/OK")-&subscribeEvent(&Window::EventMouseClick,&Event::Subscriber(&&handleMessageBoxBtnOKClicked)&);&&&&//&将MessageBox的属性设置为模态窗口&&msgbox-&setModalState(true);&&&&//&显示MessageBox&&&&CEGUI::System::getSingleton().getGUISheet()-&addChildWindow(msgbox);}
不要担心关于删除的问题,CEGUI采用延后一贞删除的策略,任何Destory操作都延后了。可以查看CEGUISystem的代码。
在MS里我们一般这样写关于MBox的代码:int ret = MessageBox("123","123",NULL,MB_OKCANCEL);if(&ret ==&6&){}else{}
别想实现象MS里的MessageBox,否则将面临相当复杂的“重入”问题。
而且因为我们事先已经知道如果MessageBox的某按钮被按下时需要做什么事,所以只需要把这部分的逻辑事先写好,然后注册到MessageBox里的相应按钮对象上去就可以了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31693次
排名:千里之外
转载:16篇
(1)(17)(2)&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
该文档贡献者很忙,什么也没留下。
&#xe602; 下载此文档
正在努力加载中...
CEGUI文档 这份文档主要讲解的是Sample_Demo6例子。 首先我们来
下载积分:1200
内容提示:CEGUI文档 这份文档主要讲解的是Sample_Demo6例子。 首先我们来
文档格式:DOCX|
浏览次数:208|
上传日期: 06:01:09|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe612;&#xe612;
该用户还上传了这些文档
CEGUI文档 这份文档主要讲解的是Sample_Demo6例子。
官方公共微信在游戏中使用CEGUI ―― 第一章(底层)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在游戏中使用CEGUI ―― 第一章(底层)
上传于||文档简介
&&初&#8203;学&#8203;者&#8203;可&#8203;以&#8203;了&#8203;解&#8203;一&#8203;下&#8203;c&#8203;e&#8203;g&#8203;u&#8203;i&#8203;的&#8203;构&#8203;架&#8203;情&#8203;况
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢游戏程序设计Ogre+cegui 0.7.1-五星文库
免费文档下载
游戏程序设计Ogre+cegui 0.7.1
导读:23、2.在程序上遇到的困难,1、蒙皮失效在首次制作过程中出现了蒙皮失效的情况,之后经过仔细查找,发现由于体型模式按钮没有使用导致的。以此认识到认真是必须的。2、多动作的制作经过细致的摸索,找到了多动作制作与分开导出的方法。在OGREMAX中要对选中的动作模型,设置各个动作的起始,最终时间,这样就能在导出的mesh模型中调用各种动作。3、动作质心问题动作质心的移动和位置问题,一直都很严重
1、蒙皮失效
在首次制作过程中出现了蒙皮失效的情况,之后经过仔细查找,发现由于体型模式按钮没有使用导致的。以此认识到认真是必须的。
2、多动作的制作
经过细致的摸索,找到了多动作制作与分开导出的方法。在OGREMAX中要对选中的动作模型,设置各个动作的起始,最终时间,这样就能在导出的mesh模型中调用各种动作。
3、动作质心问题
动作质心的移动和位置问题,一直都很严重。但是始终未找到有效的解决办法。目前的解决方式是手动修改质心的位置和移动距离。
4、场景导出贴图等问题
由于建模标准没有统一,各种命名问题等都会引起场景导出出错。在以后的工作中,特别是多人合作的情况,必须要统一标准,统一命名。
5、不知道原由的破面, 多加点少了点
为寻找出现这些问题的原因花费了不少时间,有时不得不因为找不到或者已经完全破坏无法修改时重新建一个,这时过程文件的保存就非常重要了。就如在制作体育馆的模型时,我在制作过程中就边减少面,做到中间时发现了一个破面,找了很久都无法找到原因。后来终于找到原因发现是因为在删面时多删掉了一个固定位置的点,导致附近的面无法形成。
6 、3dmax中药高清楚视图的关系,把左视图和又视图弄反了会完全建错模型
7、建模的时候节约用面了,多边形,样条线要减少段数,这样会使渲染的速度加倍
8、为了能更方便精确的做出模型 可以在视图中添加视口背景,匹配位图,这样移动模型的时候背景图就不会移动了,一般设置前视图和左视图,在透视图中对比来做
9、可以在材质编辑器中选择在视口中显示标准贴图,这样能更直观的观察贴图是否合适,如果要两面显示的话可以选择明暗器中的双面,双面在透视图中观察不到的,在渲染后可以观察出来
10、在可编辑多边形中可以选择点的环形或者循环,从而选中相关的点,这样比较方便不用一个一个点选中
11、3dmax中有可编辑多边形和可编辑网格,可编辑网格比较稳定,可编辑多边形本质上还是mesh但是修改的功能比可编辑网格要多很多。
12、做地图时遇到的问题主要是怎么做,不知道如何下手,后来在同学的帮助下,从网上下了几个别人做的场景模型,然后参照他们的做法,在一个平面上放东西,一层一层的叠上去。做骨骼动画时,由于是看视频教程,讲的也比较仔细,没遇到什么大问题,就是做出来的动作不像,然后仔细观察了下走路或者跑步时的动作,做出来稍微能看了一下。导到ogre里面后动作又不行了,感觉模型就是飘着走的或跑的。还有就是关键帧之间会自动平滑,每一帧都有动作,因此有时候改关键帧时,动作之间会不平滑,不自然,尽量先想好在哪个地方需要关键帧,每一个关键帧大致是怎样的,尽量一次ok,同一个动作的第一帧跟最后一帧的动作需要一样。模型不能太精细也不能太粗糙,太精细的话面太多会卡,但是太粗糙的话,蒙皮的时候不太好蒙,面少每个点的权值比较难衡量,很容易穿破面。将动作导成mesh的时候老是出错,不是导出来没东西就是有中文名。
13、建模初期不知道如何添加人物参考图。
建立一个平面,赋予贴图,选择显示材质即可,但有的贴图在编辑界面会变得很不清晰。
14、从一个BOX开始加线,很慢很复杂。
使用涡轮平滑修改器,但是注意使用此修改器会大大增加模型的面数,不可多用,塌陷之后有时还需要删线。
15、浏览视窗时,模型会忽然缩得过小,然后就找不到模型了。
找到模型之后调出移动控制柄,依据它找到并放大模型(或直接在透视窗口右上点选房子图标即可)
16、贴图初期不会展UV,用UVW贴图修改器,选择圆柱模型后添加UVW展开,贴图展开分界线非常不平整
对于不该存在的边界,选中以后右键,点击选定缝合,这样就可以将绿色的边界转化为内在的线,离得较远表示同一根线的UV会自动移动过来。
17、不能将人物的头、身、手等部分UV放在同一张UVW贴图中导出
先用面级别模式,选中需要展成一张UV的面,点击分离,将它们分别分离,在面级别设置ID,然后分别展开。
18、建筑UV展分和人物区别较大,直接展开会有很多重合的面。
利用展平贴图展开所有的面,再一点点缝合。
19、建筑内部的面被外部面挡住,看不见贴图是否正确。
在面级别模式下,可以隐藏一个元素中的部分面。
20、建筑贴图显示不清晰,接近建筑后会发现贴图变模糊了。
利用平铺四方连续图案的方式给建筑贴图。
21、建筑的窗户等用照片贴图会显得很不真实。
将窗玻璃更改为透明贴图,在窗户面后创建玻璃材质,以求达到玻璃的效果。
22、在建模上遇到的问题,主要就是模型,以及贴图的命名不准确,会出现各种错误(包括出现中文目录名,归档路径下有中文,不同文件夹下的贴图重命名错误,以及部分建模组的贴图丢失)给模型的导出以及mesh格式导入到ogre中带来了各种困难。后来我和汪佳力把模型的路径名全部重新改了,重新规范化命名,去掉了空格和“-”.
23、2.在程序上遇到的困难,主要就是新建一个工程,之前1.6的工程可以搭建起来,但是
1.7的工程有很多变量没有设置好然后,工程一直搭建不起来,最后仔细的看了教程问了同学,然后把这个问题解决了。还有就是编程的时候添加新的场景进去,添加模型进去遇到了问题,我虽然在packs文件夹下放进了压缩包,但是报错说找不到文件,然后我又分别在model文件夹,scrip文件夹以及texture文件夹下放进了相应的文件,整个场景才显示出来。 24、3.Ogre场景中模型的贴图错位问题,这个主要是由于贴图重命名引起。
4.之前刚开始贴图的时候遇到了很多的贴图显示不出来的问题,后来通过找资料,请教同学,以及看书都解决了。
包含总结汇报、专业文献、文档下载、党团工作、IT计算机、应用文书以及游戏程序设计Ogre+cegui 0.7.1等内容。本文共4页
相关内容搜索}

我要回帖

更多关于 短文字编程游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信