cocos2d-x学习tests程序流程

bool AppDelegate::applicationDidFinishLaunching()
{
    // initialize director
    CCDirector *pDirector = CCDirector::sharedDirector();
    pDirector->setOpenGLView(&CCEGLView::sharedOpenGLView());

    // enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices.
    // pDirector->enableRetinaDisplay(true);

    // turn on display FPS
    pDirector->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);

    CCScene * pScene = CCScene::create();
    CCLayer * pLayer = new TestController();
    pLayer->autorelease();

    pScene->addChild(pLayer);  
    pDirector->runWithScene(pScene);  
   return true;
}

AppDelegate是tests程序入口。看上面的代码,程序加载流程如下:

构造导演,导演设置相关属性(FPS,openGLView);

创建场景;

创建布景;

将布景添加到场景;

导演执行场景;

整个程序的初始工作就完成了,后面就是各个场景的内容。

运行tests工程,可以看到第一个画面是一个list,里面N多项。

第一条ActionsTest,看一下加载流程:

在AppDelegate中有一句CCLayer * pLayer = new TestController();

看TestController的构造函数

TestController::TestController()
: m_tBeginPos(CCPointZero)
{
    // add close menu
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(s_pPathClose, s_pPathClose, this, menu_selector(TestController::closeCallback) );
    CCMenu* pMenu =CCMenu::create(pCloseItem, NULL);
    CCSize s = CCDirector::sharedDirector()->getWinSize();

    pMenu->setPosition( CCPointZero );
    pCloseItem->setPosition(CCPointMake( s.width - 30, s.height - 30));

    // add menu items for tests
    m_pItemMenu = CCMenu::create();

    for (int i = 0; i < TESTS_COUNT; ++i)
    {
       CCLabelTTF* label = CCLabelTTF::create(g_aTestNames[i].c_str(), "Arial", 24);
       
        CCMenuItemLabel* pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(TestController::menuCallback));

        m_pItemMenu->addChild(pMenuItem, i + 10000);
        pMenuItem->setPosition( CCPointMake( s.width / 2, (s.height - (i + 1) * LINE_SPACE) ));
    }

    m_pItemMenu->setContentSize(CCSizeMake(s.width, (TESTS_COUNT + 1) * (LINE_SPACE)));
    m_pItemMenu->setPosition(s_tCurPos);
    addChild(m_pItemMenu);

    setTouchEnabled(true);

    addChild(pMenu, 1);

}
代码很好懂,添加关闭菜单,添加tests的item,开启Touch模式。

Touch一个item会进入对应的test,是由一个回调函数实现:

menu_selector(TestController::menuCallback)

具体可以看这个函数的实现。

然后就进入各个item场景了



你可能感兴趣的:(cocos2d-x游戏开发,cocos2d-x,Cocos2d-x,游戏开发)