利用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. windows下react-native android环境搭建注意事项

    1.使用了genymotion建立模拟器(新增时模拟器时记得选网络,如下图) 与android stuido搭配使用教程:http://jingyan.baidu.com/article/915fc4 ...

  2. 【Python】控制鼠标点击

    from pymouse import PyMouse m = PyMouse() a = m.position() #获取当前坐标的位置 print(a) m.move(50, 500) #鼠标移动 ...

  3. go语言浮点数

    package main import "fmt" func main() { var num,num1 float32 num = 10 num1 = 100 fmt.Print ...

  4. 在Windows上安装Gradle

    1.开发环境 (1)Java:JDK8(必须是JDK或JRE7以上,使用java -version查看当前电脑java版本) (2)操作系统:Windows 7 2.安装步骤 (1)下载最新的Grad ...

  5. oracle 使用绑定变量极大的提升性能

    初始化操作 SQL> alter system flush shared_pool; SQL> set timing on; 1. 未使用绑定变量的时候代码如下 declare type ...

  6. 如何配置Linux的服务设置为自动启动或崩溃重新启动后

    介绍 在本教程中,自动启动 Linux 服务,我们将退后一步,更详细地解释 init 进程. 你应该很好地了解它们如何控制守护进程的启动行为. 在第一部分本系列教程我们分享使用 MySQL 的如何崩溃 ...

  7. cisco ASA ios升级或恢复

    cisco ASA ios升级或恢复 一.升级前准备工作 1.准备好所要升级的IOS文件及对应的ASDM文件 2.在一台电脑上架设好tftp,设置好目录,与防火墙进行连接(假设电脑IP为192.168 ...

  8. 根据字体多少使UILabel自动调节尺寸

    原文:http://blog.csdn.net/enuola/article/details/8559588 在大多属性情况下,给UILabel进行动态数据绑定的时候,往往需要根据字符串的多少,动态调 ...

  9. p,np,npc,np难问题,确定图灵机与非确定图灵机

    本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...

  10. 【Python】新建自定义个数的自定义长度名字

    # -*- coding:utf-8 -*- import random def CreateRandomName(number,length): """ :param ...