8 cocos2dx加入场景切换效果,控制场景切换彻底完毕之后再运行动画
1
加入场景切换效果
供场景切换的类:
CCTransitionJumpZoom CCTransitionProgressRadialCCW CCTransitionProgressRadialCW CCTransitionProgressHorizontal CCTransitionProgressVertical CCTransitionProgressInOut CCTransitionProgressOutIn CCTransitionCrossFade CCTransitionFadeTR CCTransitionFadeBL CCTransitionFadeUp CCTransitionFadeDown CCTransitionTurnOffTiles CCTransitionSplitRows CCTransitionSplitCols CCTransitionFade CCTransitionShrinkGrow CCTransitionRotoZoom CCTransitionMoveInL CCTransitionMoveInR CCTransitionMoveInT CCTransitionMoveInB CCTransitionSlideInL CCTransitionSlideInR CCTransitionSlideInT CCTransitionSlideInB |
场景切换案例:
TMenu.h |
#ifndef #define #include USING_NS_CC; class { public: static CREATE_FUNC(TMenu); bool CCMenu * void void virtual virtual }; #endif |
TMenu.cpp |
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //供场景切换用 static CCTransitionScene * switchSceneEffect(int index,float t,CCScene *s) { switch (index) { case 0: return CCTransitionJumpZoom::create(t, s); break; case 1: return CCTransitionProgressRadialCCW::create(t, s); break; case 2: return CCTransitionProgressRadialCW::create(t, s); break; case 3: return CCTransitionProgressHorizontal::create(t, s); break; case 4: return CCTransitionProgressVertical::create(t, s); break; case 5: return CCTransitionProgressInOut::create(t, s); break; case 6: return CCTransitionProgressOutIn::create(t, s); break; case 7: return CCTransitionCrossFade::create(t, s); break; case 8: return CCTransitionCrossFade::create(t, s); break; case 9: return CCTransitionFadeTR::create(t, s); break; case 10: return CCTransitionFadeBL::create(t ,s); break; case 11: return CCTransitionFadeUp::create(t, s); break; case 12: return CCTransitionFadeDown::create(t, s); break; case 13: return CCTransitionTurnOffTiles::create(t, s); break; case 14: return CCTransitionSplitRows::create(t, s); break; case 15: return CCTransitionSplitCols::create(t, s); break; case 16: return CCTransitionFade::create(t, s); break; case 17: return CCTransitionShrinkGrow::create(t, s); break; case 18: return CCTransitionRotoZoom::create(t, s); break; case 19: return CCTransitionMoveInL::create(t, s); break; case 20: return CCTransitionMoveInR::create(t, s); break; case 21: return CCTransitionMoveInT::create(t, s); break; case 22: return CCTransitionMoveInB::create(t, s); break; case 23: return CCTransitionSlideInL::create(t, s); break; case 24: return CCTransitionSlideInR::create(t, s); break; case 25: return CCTransitionSlideInT::create(t, s); break; case 26: return CCTransitionSlideInB::create(t, s); break; } } static { "T01LayerAnchorPoint.h", "T02LayerSprite.h", "T03LayerZorder.h", "T04ColorLayer.h", "T05Coordinate.h", "T06BatchNode.h", "T07Schedule.h", "T08Touch.h", "T09Memory.h", "T10Label.h", "T11CCMenu.h", "T12UI.h", "T13Action.h", "T14Animation.h", "T15Speed.h", "T16CCFollow.h", "T17CCProgressTo.h", "T18Grid3D.h", "T19Draw.h", "T20Music.h", "T21Particle.h", "T22UserDefault.h" }; CCScene * { CCScene * TMenu * scene->addChild(layer); return } bool { CCLayer::init(); menu = for (int { CCMenuItem * this, menu_selector(TMenu::menuCallback)); menu->addChild(item); } menu->alignItemsVertically(); addChild(menu); CCArray * array = CCObject * int CCARRAY_FOREACH(array,obj) { CCMenuItem * item->setTag(i i++; } CCMenuItem * closeItem->setTarget(this, CCMenu * menu2->setPosition(CCPointZero); closeItem->setPosition(ccp(winSize.width winSize.height addChild(menu2); setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); return } void { CCMenuItem * CCScene * switch (item->getTag()-10000) { case 1: pScene = break; case 2: pScene = break; case 3: pScene = break; case 4: pScene = break; case 5: pScene = break; case 6: pScene = break; case 7: pScene = break; case 8: pScene = break; case 9: pScene = break; case 10: pScene = break; case 11: pScene = break; case 12: pScene = break; case 13: pScene = break; case 14: pScene = break; case 15: pScene = break; case 16: pScene = break; case 17: pScene = break; case 18: pScene = break; case 19: pScene = break; case 20: pScene = break; case 21: pScene = break; case 22: pScene = break; } //以下的代码用于做控制场景切换用 if (pScene != NULL) { static int idx = 0; CCTransitionScene * scene = switchSceneEffect(idx++, 2, pScene); if (idx == 27) { idx = 0; } CCDirector::sharedDirector()->replaceScene(scene); } } void { exit(0); } bool { return } void { CCRect CCMenuItem * CCMenuItem * CCPoint CCPoint if (rcWin.containsPoint(firstInWorld)&&pTouch->getDelta().y<0) return; if (rcWin.containsPoint(lastInWorld) return; menu->setPositionY(menu->getPositionY() } |
执行效果: |
2
有时候我们想等场景切换彻底完毕之后再让动画播放,这时候须要做重写下面代码:
void void |
案例:
#include #include CCScene *T14Animation::scene() { CCScene * T14Animation * scene->addChild(layer); return } bool { TBack::init(); return } //在进入场景的时候做下面操作 void { TBack::onEnter(); //以图片的方式创建一个精灵 spr = //设置精灵的显示位置 spr->setPosition(ccp(winSize.width addChild(spr); } //当场景切换彻底完毕之后运行的动作。 void { TBack::onEnterTransitionDidFinish(); //plist中是图片信息 CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("animation/plant.plist"); //创建动画 CCAnimation * //这个用于存储图片的名字 char for (int { memset(nameBuf, sprintf(nameBuf, animation->addSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(nameBuf)); } //设置每次动画运行的时候的延时 animation->setDelayPerUnit(0.1f); //这仅仅循环两次 animation->setLoops(2); CCAnimate * spr->runAction(animate); } |
上面案例在场景彻底切换完毕之后新场景中的动画等效果才运行。
8 cocos2dx加入场景切换效果,控制场景切换彻底完毕之后再运行动画的更多相关文章
- jQuery实现多种切换效果的图片切换的五款插件
1:Nivo SliderNivoslider:丰富的图片切换效果 官方网址:https://themeisle.com/plugins/nivo-slider 查看演示:https://www.he ...
- iOS7之定制View Controller切换效果
在iOS5和iOS6前,View Controller的切换主要有4种: 1. Push/Pop,NavigationViewController常干的事儿 2. Tab,TabViewControl ...
- iOS开发之虾米音乐频道选择切换效果分析与实现
今天博客的内容比较简单,就是看一下虾米音乐首页中频道选择的一个动画效果的实现.之前用mask写过另外一种Tab切换的一种效果,网易云音乐里边的一种Tab切换效果,详情请移步于"视错觉:从一个 ...
- Android-Activity的切换效果
Android-Activity的切换效果 Android-Activity的切换效果 Activity有一个默认的切换效果,但是有时候单一的切换效果未免单调,Activity的切换效果也是我们可以自 ...
- cocos2dx基础篇(24) 场景切换效果CCTransitionScene
[3.x] (1)去掉 "CC" (2)卡牌翻转 TransitionFlip 中的样式 tOrientation // //1: kCCTransitionOri ...
- Learning Cocos2d-x for WP8(6)——场景切换和场景过渡效果
原文:Learning Cocos2d-x for WP8(6)--场景切换和场景过渡效果 C#(wp7)兄弟篇 Learning Cocos2d-x for XNA(6)——场景切换和场景过渡效果 ...
- cocos2d-x 2.x版本中,场景切换各方法调用顺序
假设从A场景切换到B场景,调用各场景方法的顺序为: 如果没有切换效果(transition),则先调用B的init(),再调用A的onExitTransitionStart(),接着调用A的onExi ...
- Cocos2d-x 学习笔记(3.1) Scene 场景与场景切换
1. Scene 简介 游戏中我们看到/看不到的所有元素都是展示在场景之Scene上. 我们可以把场景比作放在地上的没盖纸箱,层Layer是纸箱里堆放的玻璃,Sprite等元素画在玻璃Layer上,这 ...
- Cocos2d-x学习笔记(九)场景切换
这里只介绍两个简单的两个场景相互切换的方法. void pushScene(Scene *sn)和void popScene(Scene *sn)是一对.前者将当前场景放入到场景堆栈中,并切换到下一个 ...
随机推荐
- OD调试篇1—Hello
OD调试篇1—Hello 要求:通过OD将程序的标题“I love fishc.com”改为“I love you” 一.找到程序的标题“I love fishc.com” 1.把程序拖到OD运行出现 ...
- java执行windows 的cmd 命令
//获取运行时 Runtime rt = Runtime.getRuntime(); //获取进程 Process p = rt.exec(String[] cmdarray); 或者 P ...
- 红帽系列linux自行配置本地yum源
yum是红帽系列的一种包管理工具,能方便的自动解决安装包的依赖关系.以前用rpm包管理安装gcc时,rpm -ivh gcc.rpm ,一般会提示要安装gcc需要安装某某lib库,等你找到那个库的rp ...
- C语言之六大排序算法
排序算法 1.直接插入排序 直接插入排序是将原始数据依次从已排好序的序列的最右侧比较起,若小于则向前插,一直插到合适的位置即可. 源代码如下: #include<stdio.h> void ...
- (C)高级排序法
1.快速排序法 //方法1 从大到小 #include <iostream.h> void run(int* pData,int left,int right) { int i,j; in ...
- Spring MVC 入门基础
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 原文链接:http://java.chinaitlab.com/advance/899129.html 基本上是一个精简版的 ...
- QProcess与外部程序的调用(可以通过设置管道来交互)
项目做到一定阶段,经常需要在原来的工程上调用外部程序.Qt为此提供了QProcess类,QProcess可用于完成启动外部程序,并与之交互通信. 一.启动外部程序的两种方式:(1)一体式:void Q ...
- KbmMW资源汇总(更新中…)
KbmMW框架是收费的,不在此提供下载,如需购买,请自行联系作者Kim Madsen. 网址资源: 官网主页:http://www.components4programmers.com/product ...
- spring bean管理 笔记1
轻量级,无侵入 Bean管理 1 创建applicationContext.xml 2 配置被管理的Bean 3 获取Bean pom.xml配置 <dependency> <gro ...
- cmake 学习笔记(六)
希望这是现阶段阻碍阅读shiboken和PySide源码的涉及cmake的最后一个障碍 ^ _^ 学习 cmake 的单元测试部分 ctest. 简单使用 最简单的使用ctest的方法,就是在 CMa ...