大坡3D软件开发

自主操作系统和CPU--用软件来改变世界

afxvisualmanagervs2005.cpp(33)内存泄漏问题

当使用VC2008编译时,发现MFC的程序提示有如下内存泄漏:Detected memory leaks!Dumping objects ->f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/afxvisualmanagervs2005.cpp(33) : ...

2010-03-19 13:04:00

阅读数 3632

评论数 0

第二人生的源码分析(112)脚本的综合分析(2)

 前面介绍了分析脚本类的声明,下面来仔细地分析它的实现代码,理解它的实现过程,也就理解了脚本代码的编译过程,如下: 返回生成的代码大小为0.#001  S32 LLScriptScript::getSize()#002  {#003     return 0;#004  }#005   脚本类的构...

2008-08-03 17:42:00

阅读数 3513

评论数 1

第二人生的源码分析(111)脚本的综合分析(1)

 当语法分析一个脚本完成时,那么就会把整个脚本的分析结果保存起来,在第二人生里把脚本的结果保存到那里呢?现在就来分析这个问题,先来看看语法分析的文件里,有如下的代码:#001    case 3:#002  #line 277 "indra.y"#003      {#004 ...

2008-07-29 21:37:00

阅读数 3741

评论数 0

第二人生的源码分析(110)脚本的语法分析(5)

 在脚本里有很多语句组成的,那么对于语句又是怎么进行语法分析的呢?下面就来分析for语句的分析过程,它的声明代码如下:#001  class LLScriptFor : public LLScriptStatement#002  {#003  public: 构造函数,输入保存的值。#004   ...

2008-07-27 19:52:00

阅读数 3352

评论数 0

第二人生的源码分析(109)脚本的语法分析(3)

  下面来详细地分析语法分析相关的类,以便了解整个语法分析的过程和细节,这样也方便地复用第二人生里的脚本编译器,达到源码复用的目标。先来分析类LLScriptFilePosition,它的声明代码如下:#001  class LLScriptFilePosition#002  {#003  pub...

2008-07-24 21:52:00

阅读数 3434

评论数 2

第二人生的源码分析(106)脚本的词法分析(4)

 前面介绍了flex文件的格式,那么flex程序又把这个文件生成怎么样的文件呢?下面就来仔细分析这个文件,由于flex程序生成C++的文件格式,那么就需要C++的编译器才可以编译了。它的代码如下:#001  #line 2 "lex_yy.cpp"这行是行号同步使用。 #002...

2008-07-15 23:35:00

阅读数 2953

评论数 0

第二人生的源码分析(104)脚本的词法分析(2)

接着上一次,再来分析flex文件的下一部份:规则部份。它们由一连串带有代码的正则表达式组成,当匹配相对应的正则表达式时,这些代码就会被运行。下面就一段规则的代码:#001 %%这行表示规则代码开始。 #002 "//"                   { gInternal...

2008-07-11 22:25:00

阅读数 2903

评论数 0

第二人生的源码分析(103)脚本的词法分析(1)

从前面的脚本可以看到它的代码,也理解它的意思了,但是它是怎么样执行的呢?又是怎么样变成可执行的脚本呢?下面就来分析这部份相关的代码。要了解脚本执行,就得把脚本中的每一个单词识别出来,如下: default {  state_en...

2008-07-10 22:32:00

阅读数 3956

评论数 0

第二人生的源码分析(102)脚本的构造

前面我们学习怎么样打开窗口来创建脚本,接着下来就需要知道这些脚本是做什么用的,这样最终才会按它的语义来正确地执行起来。现在我们能够查看脚本的内容: default{ state_entry() {  llSay(0, “Hell...

2008-07-07 22:10:00

阅读数 3348

评论数 0

第二人生的源码分析(101)脚本的初步知识

哲学里说,世界是永远在运动的。那么在现实中人们对软件的需求是永远在变化的,为了对付这种不断变化的需求,有什么好方法吗?难道还是像过去一样,每一个需求都是发布一个版本来解决?随着市场竞争的激烈化,满足每一个用户个性化需求,就需要考虑一种办法让用户自己去改变的游戏世界里的东西了。在第二人生里,就引入了...

2008-07-04 20:00:00

阅读数 2981

评论数 0

第二人生的源码分析(100)雷达地图详细显示

前面已经介绍雷达地图的类声明,现在就来仔细分析一下雷达地图是怎么样显示出来的。雷达地图显示函数LLNetMap::draw代码如下:#001 void LLNetMap::draw()#002 {#003    static LLFrameTimer map_timer;#004  判断是否显示雷...

2008-07-02 21:00:00

阅读数 4068

评论数 3

第二人生的源码分析(九十九)雷达地图的实现

无论是在2D的游戏里,还是在3D的游戏里,雷达地图的实现,都是比较基本的功能了。因为随着游戏世界里越来越大,参加的玩家也越来越多,需要一个大体的地图来让玩家方便地看到全局的概貌。比如在打对战的游戏里,更加需要了解别人在那里战斗了。有了雷达地图之后,就可以让玩家更加方便地了解全局地图上发生的事情,也...

2008-07-01 21:30:00

阅读数 4937

评论数 0

第二人生的源码分析(九十八)LLIconCtrl实现图标按钮显示

在前面已经介绍过文字按键的实现,这里主要实现一个图标按钮的实现,如下图里右下角显示的喇叭显示和向上选择的按钮,都是图标显示类型的按钮。 先来看图标按钮类的继承关系,如下:class LLIconCtrl: public LLUICtrl由这里可以看到LLIconCtrl类是控件类,它可以显示在界面...

2008-06-30 21:17:00

阅读数 3016

评论数 0

第二人生的源码分析(九十七)LLSlider实现音量滑动条

由于第二人生是多媒体的程序,因此它有音乐播放和语言聊天,那么就得使用到一种滑动条来调整音量的大小,如下图所示: 那么这个音量滑动条是怎么样实现的呢?下面就来详细地分析它的实现代码,先来看看它的类继承关系,如下:class LLSlider : public LLUICtrlLLSlider类只继承...

2008-06-22 23:16:00

阅读数 5648

评论数 2

第二人生的源码分析(九十六)LLMenuItemGL实现菜单的显示

在第二生里,菜单是缺少不了的。菜单提供了简单层次关系的一种表达方式,方便表达复杂的层次关系,并且方便写说明书,方便售后服务人员的描述,方便培训。因此,在一个程序没有菜单,往往带来很多不方便的地方。登录界面的菜单如下图: 从上图可以看到File、Edit、Help几个菜单,那么它是怎么样实现的呢?下...

2008-06-20 23:12:00

阅读数 2666

评论数 0

第二人生的源码分析(九十五)LLCheckBoxCtrl类实现复选按钮

在第二人生的登录界面里,可以看到输入密码的下面有一个复选按钮,如下图所示:这个按钮在这里主要用来设置是否帮助用户保存密码在磁盘里的,这样可以使用户每次不用输入密码,就可以登录进去。那么这个按钮是怎么样实现的呢?现在就分析跟这个相关的代码,它的继承代码如下:class LLCheckBoxCtrl:...

2008-06-19 23:35:00

阅读数 3952

评论数 0

第二人生的源码分析(九十四)LLTextBox类实现文本显示

在登录的画面里,可以看到程序的版本显示,那么它是怎么样显示出来的呢?现在就来分析显示这个版本号的代码,其实它是由静态文本显示框LLTextBox来显示的。比如在登录时创建版本显示的代码如下: 这里就是创建静态文本框。#001 LLTextBox* version_text = LLUICtrlFa...

2008-06-18 23:04:00

阅读数 3405

评论数 0

第二人生的源码分析(九十二)LLLineEditor实现编辑框

在基于GUI界面的软件交互时,最基本的输入就是编辑框了,比如下图里输入的用户名称和密码,在游戏界面的编辑框里输入文字是一个高技术难度的问题,因为Windows输入法调用,也是难点之一。 那么在第二人生里的用户名称和密码的编辑框是怎么样实现的呢?现在就来分析这部份的代码,它的类继承关系如下:clas...

2008-06-16 21:57:00

阅读数 3957

评论数 0

第二人生的源码分析(九十一)LLScrollListCtrl列表的详细绘制

从前面可以看到怎么样绘制滚动列表框的代码,但在那个函数里面还调用一个函数drawItems来详细地绘制列表项的,现在就来分析这个函数的代码,如下:#001 void LLScrollListCtrl::drawItems()#002 { 计算左上角显示的位置。#003    S32 x = mIt...

2008-06-15 21:04:00

阅读数 2966

评论数 0

第二人生的源码分析(九十)LLScrollListCtrl实现列表显示

在第二人生的UI显示里,滚动列表也使用比较多的,由于多项列表选择的情况下,使用滚动列表往往使用界面使用起来更方便实用。如下面的登录界面,就有使用到滚动列表的控件: 从上图里可以看到最右边使用到一个滚动列表来显示不同的服务器,这样方便用户选择不同的服务器登录。那这个滚动列表是怎么样实现的呢?接着下来...

2008-06-14 21:41:00

阅读数 2334

评论数 0

提示
确定要删除当前文章?
取消 删除