【Cocos2D-X游戏开发笔记2】自定义场景及场景切换效果
2013-03-31 20:29
453 查看
自定义场景类MyGameLayer,代码如下:
MyGameLayer.h如下
MyGameLayer.cpp如下
如何切换到自定义的MyGameLayer?
HelloCpp工程中做如下修改:
1)HelloWorldScene.h引入头文件
#include "MyGameLayer.h"
2)修改HelloWorld::init,创建一个菜单,点击菜单后切换到自定义的MyGameLayer
其它切换效果有:
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);//按列切
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);//按列切
相关文章推荐
- cocos2d-x游戏开发(十二)场景切换:滑门效果
- cocos2d-x游戏开发(十二)场景切换:滑门效果
- Cocos2d-x游戏开发——场景切换效果
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十课:Cocos2D-X场景切换1-3
- 【Cocos2d-x游戏引擎开发笔记(10)】自定义场景和场景跳转
- 【Cocos2d-x游戏引擎开发笔记(10)】自定义场景和场景跳转
- cocos2d-x游戏开发(十一)细说场景切换
- Cocos2D-x游戏开发之一:场景切换
- 【Cocos2d游戏开发之二】CCScene场景切换的特效
- 【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果
- 【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果
- quick-cocos2d-x游戏开发【6】——制作自定义效果按钮菜单
- 【Cocos2d-x游戏引擎开发笔记(17)】实现运动的尾巴效果
- cocos2d-x ios游戏开发初认识(四) 场景的切换
- 【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果
- 【Cocos2d-x游戏引擎开发笔记(5)】自定义动画
- 【Unity3D】学习笔记(第3记) 2D游戏开发基本技巧之场景切换(Javascript)
- 【Cocos2d-x游戏引擎开发笔记(5)】自定义动画
- 【Cocos2d-x游戏引擎开发笔记(17)】实现运动的尾巴效果
- 【Cocos2d-x游戏引擎开发笔记(9)】实现DotA的技能冷却效果(转)