cocos2d-x学习记录5——CCTransition场景过渡
利用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场景过渡的更多相关文章
- 我的Spring学习记录(四)
虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...
- 我的three.js学习记录(二)
通过上一篇文章我的three.js学习记录(一)基本上是入门了three.js,但是这不够3D,这次我希望能把之前做的demo弄出来,然后通过例子来分析操作步骤. 1. 示例 上图是之前做的一个dem ...
- 我的three.js学习记录(三)
此次的亮点不是three.js的3d部分,而是通过调用摄像头然后通过摄像头的图像变化进行简单的判断后进行一些操作.上篇中我通过简单的示例分析来学习three.js,这次是通过上一篇的一些代码来与摄像头 ...
- ElasticSearch 学习记录之如任何设计可扩容的索引结构
扩容设计 扩容的单元 一个分片即一个 Lucene 索引 ,一个 Elasticsearch 索引即一系列分片的集合 一个分片即为 扩容的单元 . 一个最小的索引拥有一个分片. 一个只有一个分片的索引 ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- Java设计模式学习记录-模板方法模式
前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...
- Java设计模式学习记录-状态模式
前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题.状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变.这样在客户端使 ...
- Java设计模式学习记录-观察者模式
前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式. 咱们目前用的最多的就是各种MQ(Message Queue ...
- Java设计模式学习记录-备忘录模式
前言 这次要介绍的是备忘录模式,也是行为模式的一种 .现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了.那么备忘录模式又是什么样子的呢?是不是和手机 ...
随机推荐
- Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造
(一)数据分页 可以参考 https://docs.djangoproject.com/en/2.0/topics/pagination/ 模板:如果只要显示 1.2.3.4.5.6....的话, ...
- Python+Selenium笔记(六):元素定位
(一) 前言 Web应用以及包含超文本标记语言(HTML).层叠样式表(CSS).JS脚本的WEB页面,基于用户的操作(例如点击提交按钮),浏览器向WEB服务器发送请求,WEB服务器响应请求,返 ...
- 【Python】TypeError: a bytes-like object is required, not 'str'解决
对所使用的字符串类型调用encode()方法进行转换即可
- Oracle EBS OM 删除订单行
DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...
- MySQL安全策略
0.导读 MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,如何保证MySQL的数据安全? MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,如何保证M ...
- ssh中文手册
ssh-keygen 中文手册 sshd_config 中文手册 sshd 中文手册
- 使用Doxygen生成C#帮助文档
一. 什么是Doxygen? Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件.通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索程序里的批注,与打 ...
- man -k : nothing appropriate.
➜ workplace man -k zip zip: nothing appropriate. 出现这种情况,是索引库没有建立. man 和 whatis 共用一个索引库的. 我们使用 man w ...
- fedora、centos、rhel安装Adobe Flash Player 28
切换到root用户 添加Adobe Repository Adobe Repository 32-bit x86 rpm -ivh http://linuxdownload.adobe.com/ado ...
- HTML5 学习总结(三)——本地存储(localStorage、sessionStorage、WebSqlDataBase、IndexedDB)
HTML5问世以后,前端加入了一个重要的功能,便是本地存储,本地存储可分为4类: Local Storage:总的存储量有所限制,并不能提供真正的检索API,数据的生命期比窗口或浏览器的生命期长,数据 ...