cocos2dx-3.x test 启动项解析

cocos2dx-3.x test 启动项解析,第1张

概述对于cocos2dx初学者来说,引擎内带的案例test是一个很有用、很值得琢磨的东西,里面基本包含了cocos2dx的所有用法。 运行后出现如下的窗口。那如何进入我们想要进入的模块场景呢?例如运行一开始则进入Camera3DTest 这个场景。 首先分析看看AppDelegate.cpp这个文件: 在bool AppDelegate::applicationDidFinishLaunching()

对于cocos2dx初学者来说,引擎内带的案例test是一个很有用、很值得琢磨的东西,里面基本包含了cocos2dx的所有用法。

运行后出现如下的窗口。那如何进入我们想要进入的模块场景呢?例如运行一开始则进入Camera3DTest 这个场景。


首先分析看看AppDelegate.cpp这个文件:

在bool AppDelegate::applicationDIDFinishLaunching()函数中有下面语句:

auto scene = Scene::create();
auto layer = new (std::nothrow) TestController();
layer->autorelease();
layer->addConsoleautotest();
scene->addChild(layer);
director->runWithScene(scene);

生成TestController层,添加到自动释放池中,若未被其它节点引用则下一帧被释放(-1)。

添加到scene中,并运行此场景。


转到controller.cpp中,

先看看这个结构体

typedef struct _Controller{
const char *test_name;
std::function<TestScene*()> callback;
} Controller;

std::function<TestScene*()> callback,类似一个函数指针,是C++11新增的一个泛函数,类似这样

TestScene* callback()

{

do your something;

}

之后定义一个Controller g_aTestnames[],这样的结构数组,存储对应模块信息。

再看其构造函数中的一段代码:

// add menu items for tests
TTFConfig ttfConfig("Fonts/arial.ttf",24);
_itemmenu = Menu::create();
for (int i = 0; i < g_testCount; ++i)
{
auto label = Label::createWithTTF(ttfConfig,g_aTestnames[i].test_name);
auto menuItem = MenuItemLabel::create(label,CC_CALLBACK_1(TestController::menuCallback,this));
_itemmenu->addChild(menuItem,i + 10000);
menuItem->setposition(VisibleRect::center().x,(VisibleRect::top().y - (i + 1) * liNE_SPACE));
}

就是定义了文本标签菜单,其回调函数CC_CALLBACK_1(TestController::menuCallback,this));

voID TestController::menuCallback(Ref * sender)
{
Director::getInstance()->purgeCachedData();
auto menuItem = static_cast<MenuItem *>(sender);
int IDx = menuItem->getLocalZOrder() - 10000;

auto scene = g_aTestnames[IDx].callback();
if (scene)
{
scene->runThistest();
scene->release();
}
}

其中的IDx就是模块的ID号,红色的那部分就是在前面介绍的std::function的函数。

总结

以上是内存溢出为你收集整理的cocos2dx-3.x test 启动项解析全部内容,希望文章能够帮你解决cocos2dx-3.x test 启动项解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1054127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存