cocos2d-2.1rc0-x-2.1.2中的Box2dTestBed的学习和研究

程序的运行流程:

打开TestCpp的工程

1. main.cpp


2. AppDelegate.cpp

AppDelegate类继承自CCApplication,而CCApplication又继承自CCApplicationProtocol,这个类的作用负责掌管程序的生命周期,并设定一些虚方法用来执行事件的触发,在不同的操作系统平台对应不同的实现方法。

应用程序启动完成时

应用程序进入后台

应用程序从后台切换到前台

虚析构函数


3. controller.cpp

controller.cpp定义了一个TestController类,继承自CCLayer,

构造函数,负责根据示例的个数来在场景当中批量地生成菜单按钮列表,以及注册对应的点击事件(menuCallback函数),用zOrder进行指定场景的id (i+10000)。

menuCallback函数,当点击某个菜单的时候被触发,获取按钮对应的zOrder,转换为场景的nIdx,作为调用CreateTestScene的传入参数。

CreateTestScene方法是一个静态方法,传入一个编号nIdx,返回一个指向测试场景基类TestScene类的指针,根据不同的nIdx,返回不同的测试场景


4. testBasic.cpp

这个文件定义了TestScene类,继承自CCScene,

构造方法:

虚onEnter:初始化示例场景

纯虚runThisTest:实例化示例Layer并让CCDirector来切换场景

虚MainMenuCallback:返回菜单列表,实例化主菜单Layer并让CCDirector切换场景(每个测试场景右下角的MainMenu按钮)

宏方法,create[className]:返回以className为名称的CCLayer的类的实例。


5.Test.cpp

该类存在于Cpp\TestCpp\Classes\Box2DTestBed\TestEntries.cpp

继承自b2ContactListener,也就是负责碰撞检验的实现

构造函数负责设置重力、创建b2World,注册DestructionListener,注册ContactListener(自身),注册SetDebugDraw,创建groundBody,

DestructionListener:负责处理关键、形状的销毁

ContactListener:负责碰撞检验

SetDebugDraw:负责调试信息的现实,包括物件矩形框等便于开发测试的辅助图形

----------------------------------

作为继承ContactListener类的实现部分:

虚析构函数:

BeginContact:

EndContact:

PreSolve:

PostSolve:




6.TestEntries.cpp

该类存在于Cpp\TestCpp\Classes\Box2DTestBed\TestEntries.cpp,负责,依靠引用所有的demo示例类的头文件,并具体定义了Test.h当中的(extern) g_testEntries[]数组,该数组当中存放的数据结构为TestEntry结构体,{name,返回Test*的具体函数}

将Test.cpp与TestEntries.cpp分离的好处显而易见,这样可以减少Test.cpp对其他头文件的依赖,以实现减肥的目的


int g_totalEntries = sizeof(g_testEntries) / sizeof(g_testEntries[0]);



7.Box2dView.cpp

该文件里面定义了3个类:MenuLayer 、Box2DView、Box2dTestBedScene


[未完待续...先躺啦 嗷嗷嗷嗷]




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值