哲学里说,世界是永远在运动的。那么在现实中人们对软件的需求是永远在变化的,为了对付这种不断变化的需求,有什么好方法吗?难道还是像过去一样,每一个需求都是发布一个版本来解决?随着市场竞争的激烈化,满足每一个用户个性化需求,就需要考虑一种办法让用户自己去改变的游戏世界里的东西了。在第二人生里,就引入了脚本语言来解决不同用户的需求的变化,而不必重新发布新程序。有了脚本系统之后,用户想创建一个飞机在游戏里飞来飞去,就非常简单了,只要写几行脚本代码,就可以控制飞机移动了。比如还可以创建一些物体,当不同的用户来点击它时,就弹出不同的欢迎标语,这样更加具有人性化的表现。阅读全文>
发表于 @ 2008年07月04日 20:00:00|评论(loading...)|编辑|收藏
前面已经介绍雷达地图的类声明,现在就来仔细分析一下雷达地图是怎么样显示出来的。雷达地图显示函数LLNetMap::draw代码如下:阅读全文>
发表于 @ 2008年07月02日 21:00:00|评论(loading...)|编辑|收藏
无论是在2D的游戏里,还是在3D的游戏里,雷达地图的实现,都是比较基本的功能了。因为随着游戏世界里越来越大,参加的玩家也越来越多,需要一个大体的地图来让玩家方便地看到全局的概貌。比如在打对战的游戏里,更加需要了解别人在那里战斗了。有了雷达地图之后,就可以让玩家更加方便地了解全局地图上发生的事情,也方便玩家相互查找,也让玩家不会走迷路。下面就来了解第二生里的怎么样实现雷达地图的实现,它的显示界面如下:阅读全文>
发表于 @ 2008年07月01日 21:30:00|评论(loading...)|编辑|收藏
在前面已经介绍过文字按键的实现,这里主要实现一个图标按钮的实现,如下图里右下角显示的喇叭显示和向上选择的按钮,都是图标显示类型的按钮。阅读全文>
发表于 @ 2008年06月30日 21:17:00|评论(loading...)|编辑|收藏
由于第二人生是多媒体的程序,因此它有音乐播放和语言聊天,那么就得使用到一种滑动条来调整音量的大小,如下图所示:阅读全文>
发表于 @ 2008年06月22日 23:16:00|评论(loading...)|编辑|收藏
在第二生里,菜单是缺少不了的。菜单提供了简单层次关系的一种表达方式,方便表达复杂的层次关系,并且方便写说明书,方便售后服务人员的描述,方便培训。因此,在一个程序没有菜单,往往带来很多不方便的地方。登录界面的菜单如下图:阅读全文>
发表于 @ 2008年06月20日 23:12:00|评论(loading...)|编辑|收藏
在第二人生的登录界面里,可以看到输入密码的下面有一个复选按钮,如下图所示:阅读全文>
发表于 @ 2008年06月19日 23:35:00|评论(loading...)|编辑|收藏
在登录的画面里,可以看到程序的版本显示,那么它是怎么样显示出来的呢?现在就来分析显示这个版本号的代码,其实它是由静态文本显示框LLTextBox来显示的。比如在登录时创建版本显示的代码如下:阅读全文>
发表于 @ 2008年06月18日 23:04:00|评论(loading...)|编辑|收藏
在第二人生里,从登录的界面可以看到一个组合框,就是选择不同服务器的组件,它就使用到组合框了。其实组合框是由按钮、滚动列表框和编辑框组成的。它的继承关系如下:阅读全文>
发表于 @ 2008年06月17日 22:42:00|评论(loading...)|编辑|收藏
1、培养目标
l 程序设计入门,懂得怎么使用C++编写简单程序。
l 掌握程序设计方法,领会面向过程、面向对象和模板的程序设计。
l 熟练地使用C++解决问题。
l 每个人看懂1000个例子源码。阅读全文>
发表于 @ 2008年06月16日 23:57:00|评论(loading...)|编辑|收藏
在基于GUI界面的软件交互时,最基本的输入就是编辑框了,比如下图里输入的用户名称和密码,在游戏界面的编辑框里输入文字是一个高技术难度的问题,因为Windows输入法调用,也是难点之一。
那么在第二人生里的用户名称和密码的编辑框是怎么样实现的呢?现在就来分析这部份的代码,它的类继承关系如下:阅读全文>
发表于 @ 2008年06月16日 21:57:00|评论(loading...)|编辑|收藏
从前面可以看到怎么样绘制滚动列表框的代码,但在那个函数里面还调用一个函数drawItems来详细地绘制列表项的,现在就来分析这个函数的代码,如下:阅读全文>
发表于 @ 2008年06月15日 21:04:00|评论(loading...)|编辑|收藏
在第二人生的UI显示里,滚动列表也使用比较多的,由于多项列表选择的情况下,使用滚动列表往往使用界面使用起来更方便实用。如下面的登录界面,就有使用到滚动列表的控件:阅读全文>
发表于 @ 2008年06月14日 21:41:00|评论(loading...)|编辑|收藏
在第二人生里,很多界面的创建是基于XML文件来创建,比如前面提到的登录界面。在一个界面里由很多类型组件组成的,这里就介绍其中最常用的组件是按钮组件了。比如登录界面的连接或者退出按钮,都是从XML里分析出按钮的类型,然后创建按钮的。下面就来分析一下LLButton的XML处理代码,如下:阅读全文>
发表于 @ 2008年06月13日 22:25:00|评论(loading...)|编辑|收藏
前面介绍按钮可以显示在窗口里,以及这个类的声明,现在来仔细地分析一下它是怎么样实现名称显示的。
在构造函数里先保存传送入来的名称,如下:
#001 mUnselectedLabel = unselected_label;
#002 mSelectedLabel = selected_label;
#003
从类声明里可以看到mSelectedLabel和mUnselectedLabel都是声明为类LLUIString的实例,由于类LLUIString只支持LLString构造函数的名称,因此它不能显示UNICODE的字符串。阅读全文>
发表于 @ 2008年06月12日 22:31:00|评论(loading...)|编辑|收藏