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)是一对.前者将当前场景放入到场景堆栈中,并切换到下一个 ...
随机推荐
- [置顶] 关于CSDN2013博客之星的一些看法
最近一个周,最火的话题当然要数CSDN2013博客之星拉票了. 实话实说,从12月14日开始,我连续5天拉票. 通过QQ群.QQ好友.CSDN文章.给CSDN粉丝发私信等多种方式拉票,真是累死我了. ...
- 【原创】MapGIS K9 三维二次开发入门
开发语言:C# 平台版本:MapGIS K9 SP3 MapGIS K9三维平台也提供了接口和组件以实现二次开发.用户可以根据提供的接口和组件进行二次开发,也可以借助MapGISK9数据中心框架,可以 ...
- 进度记录 和 安装imagick时Cannot locate header file MagickWand.h错误的解决
修改php.ini文件,已使php支持扩展的功能 [root@localhost imagick-2.2.2]# ./configure --with-php-config=/usr/local/ph ...
- python实现单向链表
#Definition for singly-linked list. class ListNode(object): def __init__(self, x): self.val = x self ...
- [LeetCode]题解(python):026-Remove Duplicates from Sorted Array
题目来源: https://leetcode.com/problems/remove-duplicates-from-sorted-array/ 题意分析: 给定一个排好序的数组,去除重复的数,返回新 ...
- poj 1850/poj 1496
http://poj.org/problem?id=1850 -----------------http://poj.org/problem?id=1496 两题解法类似..本题为组合数学的题,要求所 ...
- position relative和absolute区别
看这个博客 说的很详细http://blog.sina.com.cn/s/blog_647a022e0101b2gn.html 总的来说 这两个属性都是通过增加left和right偏离原来的位置 但 ...
- maven GroupID和ArtifactID填什么
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构. ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称.一般Gro ...
- BZOJ 1617: [Usaco2008 Mar]River Crossing渡河问题
题目 1617: [Usaco2008 Mar]River Crossing渡河问题 Time Limit: 5 Sec Memory Limit: 64 MB Description Farmer ...
- UItexfile实时验证输入字符
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...