05 2008 档案

     摘要: 学习游戏客户端和服务器中线程的设计,它在里面尽量没使用WINDOWS API,而是自己封装,除了
创建CreateThread与CreateEvent这两个API外.  阅读全文

posted @ 2008-05-28 17:50 RichardHe 阅读(172) | 评论 (0)  编辑 |

     摘要: 项目马上正式开始启动,开始研究客户端代码.今天看到<国威>抗战游戏.
感觉有点意思.具体的意思在哪我就不说了.
看到登入界面的动画竟然是flash的做的.这点有点让我吃惊而已!  阅读全文

posted @ 2008-05-27 17:22 RichardHe 阅读(163) | 评论 (0)  编辑 |

     摘要: OGRE的OIS系统:
这次仅举个Mouse系统,我也只是为了说明其中的原理而改;
在ogre中,frameStarted接口中mMouse->capture();在此这前先注册这个监听器,不过它的名字
叫做mMouse->setEventCallback(this);所以mMouse->register(this)是一样的;因为capture是一直循环的,所以也是一直事件等待发生,
像程序的框架已经生成,一般的程序都会继承Public OIS::MouseListener,所以下面其中的方法也重载
其中可能说的不够很明白,有什么问题可以MSN或是给我留言...  阅读全文

posted @ 2008-05-23 20:02 RichardHe 阅读(173) | 评论 (0)  编辑 |

     摘要: 环境变量;一些DLL可以集中在一起,如可以放在一个文件夹目录下.
然后设置环境变量.在变量Path的值的后面添加把这个文件夹路径加在后面

提一个问题:
为什么一定要在Path变量;为什么不可以自定义一个变量,再把值设为文件夹路径???

注册一个窗口(RegisterClass)
一旦创建一个窗口(CreateWindow)一直循环进行消息转换和派遣
while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
再运行窗口注册时的回调函数  阅读全文

posted @ 2008-05-22 18:13 RichardHe 阅读(177) | 评论 (0)  编辑 |

     摘要: 事件订阅,subscribeEvent(事件名,Event::subcribe(回调函数);
方法subcribe通过一个Map Container;
typedef std::multimap SlotContainer,添加到容器中,
d_slots.insert(std::pair(group,c));而在事件触发时,
Event操作()遍历每个订阅事件的函数,代码如下:
for (; iter != end_iter; ++iter)
args.handled |= (*iter->second->d_subscriber)(args);
这样订阅事件的函数都会遍历回调到!

遇见一个CEGUI的设计问题
有的是函数指针,而有的是类型的别名?比如:
typedef bool (*SortCallback)(const ItemEntry* a, const ItemEntry* b);
typedef   阅读全文

posted @ 2008-05-21 16:47 RichardHe 阅读(175) | 评论 (0)  编辑 |

     摘要: CEGUI的事件监听器又是如何实现的呢?
对于控件,每种控件有自己的事件,如:EventKeyUp等;每个事件后面可以挂着N个事件的回调方法;
event:function1,function2......
对控件订阅事件,如button->subscribeEvent(CEGUI::Windos::EventKeyUp,CEGUI:Event::Subscriber(&function,this));
把事件EventKeyUp注册到button中,并且在事件响应时回调函数fuction

内部实现机制是怎么样的呢?内部好像通过一个Map来查找到这个事件,但是又是如何响应到function的呢?哪位大哥指点下?  阅读全文

posted @ 2008-05-20 16:34 RichardHe 阅读(226) | 评论 (0)  编辑 |

     摘要: 监听器的注册与使用,也就是设计模式中的观察模式(observer),一对多关系
update的参数应该是subject,可以这样认为,如果把subject当作老师,observer当作学生的
话,那就比较容易明白了,update(subject* sub),也就是老师的状态发生改变时,学生也要
发生改变,并且发的变化是由老师这个参数来决定;定,既对老师进行监听  阅读全文

posted @ 2008-05-19 16:26 RichardHe 阅读(940) | 评论 (0)  编辑 |

     摘要: 本来这周的工作是开始做新项目的界面,由于美术那边的一些工作问题而延迟;不过这周自己对“设计模式”又有了点重新的认识,每看一次都有点体会,有比以前更深一点的了解。它用生活中的实际例子来解释设计模式,为什么要这样设计?并且说出它这样设计的优点。虽然这两本书《设计模式精解》和《深入浅出设计模式》还没看完,但自己以后会找时间慢慢细读完这两本书。其中对UML的认识又有了进一步的提高;以前一直不太关注和了解这东西,原来这东西为团队合作可以有着很好的协调作用;图是可以更好的解释一类东西,并不一定要使用UML中的类图等,其它的图也可以,以前经常使用MindManager这个软件。
程序上对回调函数也有了再进一步的认识,以前就知道是什么意思,也就是知道表面的东西,像就是一个函数指针呀什么的;现在知道这样做的好处是什么!相比之下,正所谓了解一个东西到它的优点你才会去使用它,而不死版的直接调用等。  阅读全文

posted @ 2008-05-16 17:29 RichardHe 阅读(138) | 评论 (0)  编辑 |

     摘要: 函数指针的应该,也可以说是回调函数的应用,一开始也知道是什么意思,也知道其用法,
但是今天和两位游戏界的朋友还是问明白了一个这个用法的好处和优点!
为什么不直接调用函数呢?为什么要用函数指针呢?
函数指针的好处就是一开始不知道调用哪个函数,直到运行时或者自己调用的时候赋值,
这样这个指针就指到了需要调用的函数,不过这个函数不能任意赋值,它的返回类型和参数
类型和个数也要一样.
阅读<设计模式精解>
软件设计中一些模块化,和高内聚,低偶合的原则  阅读全文

posted @ 2008-05-15 18:09 RichardHe 阅读(179) | 评论 (0)  编辑 |

     摘要: 今天看到梁兄的BLOG,就抄了他的几句体会箴言

第一:开闭原则,软件架构应该是扩展开放,对修改关闭
第二:LISKOV替换原则,任何基类可以出现的地方,子类一定也可以出现
第三:依赖倒转原则,要依赖于抽象,不要依赖于实现
第四:接口隔离原则,应该为客户提供尽可能小的接口,而不是提供大的接口
第五:组合,聚合复用原则,要尽量使用组合,聚合,而不是继承关系以达到复用的目的
第六:Demeter法则:一个软件实体应该与尽可能少的其他实体发生互相作用

相信以上几个原则对自己的以后开发高质量的软件有相应的优势,相对来说也比较好理解  阅读全文

posted @ 2008-05-14 17:59 RichardHe 阅读(290) | 评论 (0)  编辑 |

     摘要: 凡是绝对有效对象或者需要有效对象的地方,使用引用
void DoJob( CSceneMgr& );
CSceneMgr& GetSceneMgr();
凡是允许或者无法判断对象是否有效的地方,使用指针,并在使用该指针的作用域内对指针进行判断。
void DoJob( CSceneMgr* );
CSceneMgr* GetSceneMgr();  阅读全文

posted @ 2008-05-13 14:04 RichardHe 阅读(121) | 评论 (0)  编辑 |

     摘要: 在CEGUI0.60版本中.开始不明白在SCHEME中的

是什么作用.CEGUIFalagardWRBase是干嘛用的?
原来是渲染控件的方式.也就是在源码中CEGUIFalagardWRBase生成的库;用在后面XML中

我想是先通过CEGUIFalagardWRBase,再找到Renderer="Falagard/Button" 渲染控件类型.  阅读全文

posted @ 2008-05-12 10:19 RichardHe 阅读(213) | 评论 (0)  编辑 |

     摘要: CEGUI的设计模式:

像其中的单件模式比较容易理解.

但是像如下的设计不知道为什么要这样?  阅读全文

posted @ 2008-05-09 15:32 RichardHe 阅读(165) | 评论 (0)  编辑 |

     摘要: CEGUI有背景图片的BUTTON:
昨天听到刀哥问我对Looknfeel写东西有没有什么心德体会.说实话,我还真正的写过一个wideget.然后突然就有一个冲动想法.很多东西不写是不会熟悉的.我就参考刀哥的方法写了一个BUTTON
有两种方法可以实现,一为在Looknfeel文件中直接修改  阅读全文

posted @ 2008-05-08 16:30 RichardHe 阅读(1902) | 评论 (4)  编辑 |

     摘要: 今天在参考WindowsLook.looknfeel自己写了一个Button



1
2
3
4
5
6

7
8   阅读全文

posted @ 2008-05-07 17:00 RichardHe 阅读(267) | 评论 (0)  编辑 |

     摘要: 编辑框的backspace删除问题:
今天在Sample_FalagardDemo1这个DEMO程序中,有一个编辑框.当输入了一些字符时.如果想用退格键删除全部的话,
只能一个字符删完以后,放开BackSpace键,
再按一次退格才能删除前面的一个字符.如果想一直按着BackSpace的话,确不能全部删除.
开始有这样的想法;那就是设一个定时器,时间间隔比较短,定时器一直判断若两人BackSpace键有无按下去?
如果有按下去再执行一次void Editbox::handleBackspace(void)
但这样可能会占用许多资源;以上只是想法.不知道有谁知道更好的方法吗?欢迎指教下..  阅读全文

posted @ 2008-05-06 16:17 RichardHe 阅读(212) | 评论 (0)  编辑 |

     摘要: CEGUI的中文输入:
目前为止为我解决的也是参考别人的方法改的代码,不知道哪位兄台有更好的解决方案?
源码如下:  阅读全文

posted @ 2008-05-05 15:31 RichardHe 阅读(1860) | 评论 (5)  编辑 |

     摘要: 在WINDOWS目录下font文件夹下找一个simfang.ttf文件COPY到CEGUI的datafiles目录下的fonts下

和.font文件

如果在scheme文件中有font属性,则修改相对应的字体.

  阅读全文

posted @ 2008-05-05 13:22 RichardHe 阅读(203) | 评论 (0)  编辑 |

posts - 94, comments - 138, trackbacks - 0, articles - 94

Copyright © RichardHe