您的位置:首页 > 理论基础 > 计算机网络

Cocos2d-x学习笔记(19)(TestCpp源码分析-3)

2014-06-13 21:25 621 查看
本章主要介绍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); //切换场景
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  testBasic.hcpp