Box2D C++教程 第三节:Testbed结构

http://www.firedragonpzy.com.cn/index.php/archives/2590

声明:本文翻译自Box2D tutorials-Testbed structure ,仅供学习参考!

Testbed结构

testbed测试平台能够让你有效的添加新的测试。当你定义一个新的测试,你只要写出针对于测试的代码即可。相对于所有测试来说的,相同功能的方法例如,创建、销毁、重设,以及控制面板上的选中框和按钮,都由主程序来处理,永远都不需要更改。

每个测试中的特有方法——场景的建立,鼠标/键盘应该做什么,等等,是一种特定的需要。在创建属于我们自己的测试之前,让我们先来看看一个测试的生命周期是怎样的。

图中橘色的部分,是我们在自己的测试中需要添加或修改的部分。具体来说,我们会通过创建一个Test类的子类,Test类封装了所有公共特性,我们会在子类中覆盖其中一些方法。让我们来看几个在Test类中可能会用到的虚方法。

?
1
2
3
4
5
class Test ...{
       virtual void Step(Settings* settings);
       virtual void Keyboard(unsigned char key);
       virtual void MouseDown( const b2Vec2& p);
       virtual void MouseUp( const b2Vec2& p);

第一个方法,Step()实现了物理引擎中的单步计算以及场景渲染。其它三个Keyboard(),MouseDown()以及MouseUp()方法允许我们获取关于用户正在操作的信息。这里没有覆盖设置场景的方法,因为这些操作会在子类的构造函数中完成。

注意!testbed定义了一些默认的用户输入方法,如果这些默认的输入功能已经足够,那么你根本不需要覆盖这些输入方法。同样如果你不对渲染或者物理控制做任何特别的设置,那么你也不需要覆盖Step()方法。事实上,相对于testbed中的一些测试例子,完全可以无视上面提到的这些方法,仅靠构造函数就可以设置完毕。我记得之前告诉过你,其实这很简单,不是吗…?

还有一些类的成员变量会在子类中排上用场,这些成员变量保存了Box2D世界中活跃的所有对象信息,例如地面物体,是很多模拟场景中非常普遍的需求。稍后我们将会看到什么是世界和物体?

?
1
2
3
protected :
       b2World* m_world;
       b2Body* m_groundBody;

摘自:http://www.ohcoder.com/post/2012-06-11/40027173394


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值