利用CCTransition能够创建出一系列的场景过渡动画,能够使场景切换时更加绚丽丰富。

CCTransition派生出很多过渡动画,传入的参数一般包括过渡时间和创建的场景。

MyScene.h内容

 #ifndef MyScene_H_H
#define MyScene_H_H #include "cocos2d.h"
using namespace cocos2d; class TranScene
{
public:
static CCTransitionScene* createScene(CCScene *scene); static int index;
}; class MyScene : public CCLayer
{
public:
static CCScene* createScene();
virtual bool init();
CREATE_FUNC( MyScene ); virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
//virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
//virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
//virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent); virtual void registerWithTouchDispatcher(); //virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
//virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
//virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
//virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent); private:
}; class NextScene : public CCLayer
{
public:
static CCScene* createScene();
virtual bool init();
CREATE_FUNC( NextScene ); virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void registerWithTouchDispatcher(); private:
}; #endif

MyScene.cpp内容

#include "MyScene.h"

int TranScene::index = ;

CCTransitionScene* TranScene::createScene(CCScene *scene)
{
CCTransitionScene *tranScene = NULL;
switch(index){
case : tranScene = CCTransitionFlipX::create(, scene); break;
case : tranScene = CCTransitionFlipY::create(, scene); break;
case : tranScene = CCTransitionFadeDown::create(, scene); break;
case : tranScene = CCTransitionFadeBL::create(, scene); break;
case : tranScene = CCTransitionCrossFade::create(, scene); break;
}
index = (++index)%;
return tranScene;
} CCScene* MyScene::createScene()
{
CCScene *scene = CCScene::create();
MyScene *layer = MyScene::create();
scene->addChild(layer);
return scene;
}; bool MyScene::init()
{
if( !CCLayer::init() ){
return false;
} CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite *sprite = CCSprite::create("pal4.png");
sprite->setAnchorPoint( ccp(0.5, 0.5) );
//sprite->setPosition( ccp(size.width/2, size.height/2) );
sprite->setPosition( ccp(size.width/, size.height/) );
sprite->setScaleX( size.width/sprite->getContentSize().width );
sprite->setScaleY( size.height/sprite->getContentSize().height );
sprite->setTag();
addChild(sprite); setTouchEnabled(true); return true;
} void MyScene::registerWithTouchDispatcher()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, , true);
} bool MyScene::ccTouchBegan(CCTouch* pTouch, CCEvent *pEvent)
{
CCScene *scene = NextScene::createScene();
//CCTransitionScene *tranScene = CCTransitionFlipX::create(1, scene);
CCTransitionScene *tranScene = TranScene::createScene(scene);
CCDirector::sharedDirector()->replaceScene(tranScene);
return true;
} CCScene* NextScene::createScene()
{
CCScene *scene = CCScene::create();
NextScene *layer = NextScene::create();
scene->addChild(layer);
return scene;
}; bool NextScene::init()
{
if( !CCLayer::init() ){
return false;
} CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite *sprite = CCSprite::create("pal_4.png");
sprite->setAnchorPoint( ccp(0.5, 0.5) );
//sprite->setPosition( ccp(size.width/2, size.height/2) );
sprite->setPosition( ccp(size.width/, size.height/) );
//sprite->setScale(0.5f);
sprite->setScaleX( size.width/sprite->getContentSize().width );
sprite->setScaleY( size.height/sprite->getContentSize().height );
sprite->setTag();
addChild(sprite); setTouchEnabled(true); return true;
} void NextScene::registerWithTouchDispatcher()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, , true);
} bool NextScene::ccTouchBegan(CCTouch* pTouch, CCEvent *pEvent)
{
CCScene *scene = MyScene::createScene();
//CCTransitionScene *tranScene = CCTransitionFlipX::create(1, scene);
CCTransitionScene *tranScene = TranScene::createScene(scene);
CCDirector::sharedDirector()->replaceScene(tranScene);
return true;
}

实例中,自己简单创建了两个场景,仅仅是所显示的sprite不同而已,并在切换时添加具体的切换效果即可。

运行效果:

  

cocos2d-x内部封装了较多过渡效果,需要时自己选取即可。

cocos2d-x学习记录5——CCTransition场景过渡的更多相关文章

  1. 我的Spring学习记录(四)

    虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...

  2. 我的three.js学习记录(二)

    通过上一篇文章我的three.js学习记录(一)基本上是入门了three.js,但是这不够3D,这次我希望能把之前做的demo弄出来,然后通过例子来分析操作步骤. 1. 示例 上图是之前做的一个dem ...

  3. 我的three.js学习记录(三)

    此次的亮点不是three.js的3d部分,而是通过调用摄像头然后通过摄像头的图像变化进行简单的判断后进行一些操作.上篇中我通过简单的示例分析来学习three.js,这次是通过上一篇的一些代码来与摄像头 ...

  4. ElasticSearch 学习记录之如任何设计可扩容的索引结构

    扩容设计 扩容的单元 一个分片即一个 Lucene 索引 ,一个 Elasticsearch 索引即一系列分片的集合 一个分片即为 扩容的单元 . 一个最小的索引拥有一个分片. 一个只有一个分片的索引 ...

  5. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  6. Java设计模式学习记录-模板方法模式

    前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...

  7. Java设计模式学习记录-状态模式

    前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题.状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变.这样在客户端使 ...

  8. Java设计模式学习记录-观察者模式

    前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式. 咱们目前用的最多的就是各种MQ(Message Queue ...

  9. Java设计模式学习记录-备忘录模式

    前言 这次要介绍的是备忘录模式,也是行为模式的一种 .现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了.那么备忘录模式又是什么样子的呢?是不是和手机 ...

随机推荐

  1. cuda和gcc版本不兼容

    gcc8.1和cuda9.0版本不兼容,比较坑. 下面是各版本cuda支持的gcc: 从CUDA 4.1版本开始,现在支持gcc 4.5.gcc 4.6和4.7不受支持. 从CUDA 5.0版本开始, ...

  2. ADB三个进阶使用

    adb通过Wi-Fi连接手机 背景知识 Android系统底层运行着一个服务(adbd),也就是在手机系统内部,用于响应.管理大家在电脑端的adb命令连接,这个服务在启动时候会根据手机的配置监听USB ...

  3. leveldb源码阅读

    http://blog.csdn.net/sparkliang/article/details/8567602 http://brg-liuwei.github.io/tech/2014/10/15/ ...

  4. python自学——列表

    #以下是我自己在联系列表中所编写的语句:names=["zangsan",'lisi','wangermazi','Xiaoliuzi','dabiaoge','牛erbiaodi ...

  5. NPOI 导出Excel 数据方式

    使用NPOI的库进行Excel导出操作 公共帮助类: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using S ...

  6. python基础之os.system函数

    前言 os.system方法是os模块最基础的方法,其它的方法一般在该方法基础上封装完成. os的system原理 system函数可以将字符串转化成命令在服务器上运行:其原理是每一条system函数 ...

  7. python基础学习15----异常处理

    异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件). 1.异常的类型 异常的类型多种多样,常见的异常有: AttributeE ...

  8. [Spark Core] Spark 在 IDEA 下编程

    0. 说明 Spark 在 IDEA 下使用 Scala  & Spark 在 IDEA 下使用 Java 编写 WordCount 程序 1. 准备 在项目中新建模块,为模块添加 Maven ...

  9. 使用Index()+Match()函数实现更为灵活的VLookUp()

    上一篇 http://www.cnblogs.com/-SANG/p/8407017.html 文章中已经介绍了vlookup的用法. 今天要使用index+match实现更为灵活的vlookup 先 ...

  10. mysql用户管理与权限

    1.设置密码 set password for 用户名@localhost = password('密码'); 2.取消密码 set password for 用户名@localhost = pass ...