cocos2d-x學習tests程式流程
阿新 • • 發佈:2019-01-24
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的建構函式
程式碼很好懂,新增關閉選單,新增tests的item,開啟Touch模式。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); }
Touch一個item會進入對應的test,是由一個回撥函式實現:
menu_selector(TestController::menuCallback)
具體可以看這個函式的實現。
然後就進入各個item場景了