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)是一对.前者将当前场景放入到场景堆栈中,并切换到下一个 ...
随机推荐
- jQuery $.fn.extend方式自定义插件
之前例子是扩展jQuery的工具方法,即通过$.xxx(para);的形式来使用的.下面是扩展jquery对象的方法,即任意一个jquery对象都已访问. 具体如下: wyl.js: (functio ...
- java-输出格式
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html Formatting Numeric Print Output ...
- Python之路:Python各个器
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 1.1 使用迭代器 ...
- Apache和Nginx下禁止访问特定的目录或文件
大家是否测试Apache做了目录禁止浏览后,目录下面的txt文件还是可以显示里面的内容的.例如:http://www.domain.com/test/此访问会报403错误,但是如果test下有很多tx ...
- iOS SDK:预览和打开文档
iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处.不过由于沙盒的严格限制,导致程序之间共享数据比较麻烦.一般在程序间共享文档可以通过UIDocumentInteractionCon ...
- springMVC + mybatis 搜索 分页等
mybatis-3.0.5spring-core-3.2.0.RELEASE等MyBatis3+Spring3当前Spring版本(3.0.5)中未提供对MyBatis3的支持使用第三方jar包进行整 ...
- github的.md格式文件
md文件是github改良了markdown的语法,用来显示在项目首页的文件.在官方的网址说的很清楚: GitHub uses what we're calling "GitHub Flav ...
- android 时间滚动控件 底部弹出
下载地址:http://download.csdn.net/detail/ldd119/7440895 转载请说明出处 先上个效果图 watermark/2/text/aHR0cDovL2Jsb2cu ...
- 解惑:NFC手机怎样轻松读取银行卡信息?
自支付宝钱包8.0推出了NFC新功能,仅仅要将支持NFC功能的手机靠近公交卡.银行卡等带有芯片的IC卡上,可迅速读取卡内剩余金额.卡的信息,还能够给卡进行充值,很贴心有用. 可是非常多网友表示担忧,要 ...
- web.xml 中<taglib>报错(转载)
在web.xml加入taglib <taglib> <taglib-uri>/WEB-INF/tiles.tld</taglib- uri> <taglib- ...