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

来源:互联网 发布:网络安全教育宣传计划 编辑:程序博客网 时间:2024/06/05 10:30

程序的运行流程:

打开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


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




原创粉丝点击