本章主要介紹testBasic.h/cpp,這兩個檔案主要用於返回主情境介面。
//testBasic.h#ifndef _TEST_BASIC_H_#define _TEST_BASIC_H_#include "cocos2d.h"#include "VisibleRect.h"USING_NS_CC;using namespace std;class TestScene : public CCScene //繼承自CCScene{public: TestScene(bool bPortrait = false); //建構函式 virtual void onEnter(); //重寫onEnter函數 virtual void runThisTest() = 0; //重寫runThisTest函數 // The CallBack for back to the main menu scene virtual void MainMenuCallback(CCObject* pSender); //返回主菜單函數};typedef CCLayer* (*NEWTESTFUNC)(); //NEWTESTFUNC表示一個傳回型別為CCLayer*,沒有參數的函數指標#define TESTLAYER_CREATE_FUNC(className) \ //TESTLAYER_CREATE_FUNC表示一個建立CCLayer的宏函數static CCLayer* create##className() \ //用兩個##來在宏中替換className為宏定義的參數{ return new className(); }#define CF(className) create##className //CF表示 createXXX;比如CF(Scene)表示:createScene#endif以下是testBasic.cpp檔案介紹
//testBasic.cpp#include "testBasic.h"#include "controller.h"TestScene::TestScene(bool bPortrait) //建構函式{ CCScene::init(); //調用基類的初始化函數}void TestScene::onEnter(){ CCScene::onEnter(); //調用基類的onEnter函數 //add the menu item for back to main menu//#if (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE)// CCLabelBMFont* label = CCLabelBMFont::create("MainMenu", "fonts/arial16.fnt");//#else CCLabelTTF* label = CCLabelTTF::create("MainMenu", "Arial", 20);//#endif //將label與返回函數MainMenuCallback相關聯 CCMenuItemLabel* pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(TestScene::MainMenuCallback)); CCMenu* pMenu =CCMenu::create(pMenuItem, NULL); ///用pMenuItem初始化CCMenu對象 pMenu->setPosition( CCPointZero ); //設定pMenu位置 pMenuItem->setPosition( ccp( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); //設定返回按鍵位置 addChild(pMenu, 1);}void TestScene::MainMenuCallback(CCObject* pSender) //返回主菜單函數{ CCScene* pScene = CCScene::create(); //建立新情境 CCLayer* pLayer = new TestController(); //建立TestController層 pLayer->autorelease(); pScene->addChild(pLayer); //將新層加入到新情境 CCDirector::sharedDirector()->replaceScene(pScene); //切換情境}