自定义场景类MyGameLayer,代码如下:
MyGameLayer.h如下
#ifndef __MYGAMElAYER_SCENE_H__
#define __MYGAMElAYER_SCENE_H__
#pragma once
#include "cocos2d.h"
//使用cocos2d命名空间
USING_NS_CC;
class MyGameLayer : public cocos2d::CCLayer
{
public:
MyGameLayer(void);
virtual ~MyGameLayer(void);
static cocos2d::CCScene* scene();
virtual bool init();
CREATE_FUNC(MyGameLayer);
};
#endif // __MYGAMElAYER_SCENE_H__
MyGameLayer.cpp如下
#include "MyGameLayer.h"
MyGameLayer::MyGameLayer(void)
{
}
MyGameLayer::~MyGameLayer(void)
{
}
//创建场景
cocos2d::CCScene* MyGameLayer::scene(){
CCScene *scene = NULL;
do{
scene = CCScene::create();
CC_BREAK_IF(!scene);
MyGameLayer *gLayer = MyGameLayer::create();//需要定义CREATE_FUNC(MyGameLayer)宏
CC_BREAK_IF(!gLayer);
scene->addChild(gLayer);
}while(0);
return scene;
}
bool MyGameLayer::init(){
bool ret =false;
do{
CC_BREAK_IF(!CCLayer::init());
CCSprite *s = CCSprite::create("bg.png");
s->setPosition(ccp(240,160));
this->addChild(s,0);
ret = true;
}while(0);
return ret;
}
如何切换到自定义的MyGameLayer?
HelloCpp工程中做如下修改:
1)HelloWorldScene.h引入头文件
#include "MyGameLayer.h"
2)修改HelloWorld::init,创建一个菜单,点击菜单后切换到自定义的MyGameLayer
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
//创建开始菜单项
CCMenuItemImage *goNext = CCMenuItemImage::create("start1.png","start1.png",
this,menu_selector(HelloWorld::goNextScene));
CCSize size = CCDirector::sharedDirector()->getWinSize();
//创建菜单
CCMenu* pMenu = CCMenu::create(goNext, NULL);
pMenu->setPosition(ccp(size.width/2,size.height/2));
this->addChild(pMenu, 1);
CCLog("after init");
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::goNextScene(CCObject* pSender){
CCLog("goNextScene");
//跳转到游戏场景中
//CCScene *gScene = MyGameLayer::scene();
CCScene *s = MyGameLayer::scene();
//CCDirector::sharedDirector()->replaceScene(s);
//跳跃式,本场景先会缩小,新场景跳跃进来
//CCDirector::sharedDirector()->replaceScene(CCTransitionJumpZoom::transitionWithDuration(3, s));
//依次测试其它切换效果
//CCDirector::sharedDirector()->replaceScene(CCTransitionFade::transitionWithDuration(3, s));
//CCDirector::sharedDirector()->replaceScene(CCTransitionFlipY::transitionWithDuration(3, s,kOrientationRightOver));
//CCDirector::sharedDirector()->replaceScene(CCTransitionZoomFlipAngular::transitionWithDuration(3, s,kOrientationRightOver));
CCDirector::sharedDirector()->replaceScene(CCTransitionTurnOffTiles::transitionWithDuration(3, s));
}
其它切换效果有:
CCTransitionJumpZoom::transitionWithDuration(t, s);//跳跃式,原场景先会缩小,新场景跳跃进来
CCTransitionFade::transitionWithDuration(t, s);//淡出淡入,原场景淡出,新场景淡入
CCTransitionFade::transitionWithDuration(t, s, ccRED);//第三个参数就是淡出淡入的颜色,默认是黑色
CCTransitionFlipX::transitionWithDuration(t, s, kOrientationLeftOver);//x轴左翻
CCTransitionFlipX::transitionWithDuration(t, s, kOrientationRightOver);//x轴右翻
CCTransitionFlipY::transitionWithDuration(t, s, kOrientationUpOver);//y轴上翻
CCTransitionFlipY::transitionWithDuration(t, s, kOrientationDownOver);//y轴下翻
CCTransitionFlipAngular::transitionWithDuration(t, s, kOrientationLeftOver);//带角度转的左翻
CCTransitionFlipAngular::transitionWithDuration(t, s, kOrientationRightOver);//带角度转的右翻
CCTransitionZoomFlipX::transitionWithDuration(t, s, kOrientationLeftOver);//带缩放效果x轴左翻
CCTransitionZoomFlipX::transitionWithDuration(t, s, kOrientationRightOver);//带缩放效果x轴右翻
CCTransitionZoomFlipY::transitionWithDuration(t, s, kOrientationUpOver);//带缩放效果y轴上翻
CCTransitionZoomFlipY::transitionWithDuration(t, s, kOrientationDownOver);//带缩放效果y轴下翻
CCTransitionZoomFlipAngular::transitionWithDuration(t, s, kOrientationLeftOver);//带缩放效果/有角度转的左翻
CCTransitionZoomFlipAngular::transitionWithDuration(t, s, kOrientationRightOver);//带缩放效果有角度转的右翻
CCTransitionShrinkGrow::transitionWithDuration(t, s);//交错换
CCTransitionRotoZoom::transitionWithDuration(t, s);//旋转效果
CCTransitionMoveInL::transitionWithDuration(t, s);//新场景从左移入覆盖
CCTransitionMoveInR::transitionWithDuration(t, s);//新场景从右移入覆盖
CCTransitionMoveInT::transitionWithDuration(t, s);//新场景从上移入覆盖
CCTransitionMoveInB::transitionWithDuration(t, s);//新场景从下移入覆盖
CCTransitionSlideInL::transitionWithDuration(t, s);//新场景从左移入推出原场景
CCTransitionSlideInR::transitionWithDuration(t, s);//新场景从右移入推出原场景
CCTransitionSlideInT::transitionWithDuration(t, s);//新场景从上移入推出原场景
CCTransitionSlideInB::transitionWithDuration(t, s);//新场景从下移入推出原场景
CCTransitionCrossFade::transitionWithDuration(t,s);//淡出淡入交叉,同时进行
CCTransitionPageTurn::transitionWithDuration(t, s, false);//翻页,前翻
CCTransitionPageTurn::transitionWithDuration(t, s, true);//翻页,后翻
CCTransitionFadeTR::transitionWithDuration(t, s);//向右上波浪
CCTransitionFadeBL::transitionWithDuration(t, s);//向左下波浪
CCTransitionFadeUp::transitionWithDuration(t, s);//向上百叶窗
CCTransitionFadeDown::transitionWithDuration(t, s);//向下百叶窗
CCTransitionTurnOffTiles::transitionWithDuration(t, s);//随机小方块
CCTransitionSplitRows::transitionWithDuration(t, s);//按行切
CCTransitionSplitCols::transitionWithDuration(t, s);//按列切