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.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); //切换场景
}
相关文章推荐
- Cocos2d-x学习笔记(19)(TestCpp源代码分析-3)
- Cocos2d-x学习笔记(17)(TestCpp源码分析-1)
- Cocos2d-x学习笔记(18)(TestCpp源码分析-2)
- Cocos2d-x学习笔记(20)(TestCpp源码分析-4)
- cocos2d-x 笔记(五) TestCpp源码分析:Actions
- Cocos2d-x学习笔记(20)(TestCpp源代码分析-4)
- cocos2d-x 笔记(四) TestCpp源码分析:control
- Cocos2d-x学习笔记(18)(TestCpp源代码分析-2)
- cocos2d-x 2.X demo学习笔记 3 ----ActionTest源码 主要是滚动菜单的操作
- Cocos2d-x 2.0 TestCpp框架源码分析
- Cocos2d-x 2.0 TestCpp框架源码分析
- 五毛的cocos2d-x学习笔记02-基本项目源码分析
- Cocos2d-x 2.0 TestCpp框架源码分析
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(19)----旋转表示法
- Cocos2d-x 2.0 TestCpp框架源码分析
- cocos 2d test-cpp 学习笔记之AppDelegate.cpp 代码分析
- Cocos2d-x新手学习之TestCpp项目结构分析(第四篇)[版本:cocos2d-x-3.1.1]
- Cocos2d-x 2.0 TestCpp之场景切换动画深入分析
- cocos2d-x学习笔记(一)HelloCpp
- Cocos2d-x基础:TestCpp之项目结构分析