cocos2dx 3.1从零学习(五)——动画
动画是游戏中最重要的表现部分,本篇仅仅是初步学习大部分动画的用法。没有什么原理性的东西,可是样例有非常多,假设有不熟的地方要练一下。 特别是Spawn和Sequence的组合使用,什么时候使用Spawn,什么使用使用Sequence,怎么在它们之间相互嵌套对方。用光你的脑细胞尽力的去折磨这几个函数吧!
做出尽可能多的绚丽的组合!
动画方法
动画原理
经常使用动画
动画回调
//4个精灵在中⼼位置先后移动到屏幕的4个⾓
void SecondaryJump:: FourSprites (cocos2d :: Ref * ref )
{
auto act = Sequence :: create( MoveTo ::create (1, Point(10, 10)), CallFuncN ::create ([=]( Node * node ){
sp5 ->runAction ( Sequence:: create (MoveTo :: create(1, Point (10, 630)), CallFuncN :: create([=]( Node * node ){
sp6 ->runAction ( Sequence:: create (MoveTo :: create(1, Point (950, 630)), CallFuncN :: create([=]( Node * node ){
sp7 ->runAction ( Sequence:: create (MoveTo :: create(1, Point (950, 10)), nullptr ));
}), nullptr ));
}), nullptr ));
}), nullptr );
sp4-> runAction (act );
}
//动画回调
auto callFunc = CallFuncN :: create([=]( Node * node )
{
node ->setVisible ( false);
}); auto act = Sequence :: create( Spawn ::create ( RotateTo:: create (2, 720), MoveBy :: create(2, Point (100, 0)), nullptr ), \
MoveBy ::create (1, Point(100, 0)), JumpBy ::create (0.2f, Point(0, 0), 100, 1), callFunc ,\
CallFuncN ::create ([=]( Node * node ){ \
CocosDenshion :: SimpleAudioEngine:: sharedEngine ()->playBackgroundMusic ( "music/game_music.wav", true ); }),
nullptr ); sp2-> runAction (act );
其它动画
循环动画
void SecondaryJump:: Jump (cocos2d :: Ref * ref )
{
MenuItemFont * item = (MenuItemFont *) ref;
auto repeatAct = Repeat :: create( Sequence ::create ( MoveBy:: create (0.01f, Point (3, 3)), MoveBy ::create (0.01f, Point(-3, -3)), MoveBy ::create (0.01f, Point(3, -3)), MoveBy ::create (0.01f, Point(-3, 3)), nullptr ), 6);
item-> runAction (repeatAct );
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
帧动画Animate
贝塞尔曲线
void FrameAnimation:: Morning_0623 (cocos2d :: Ref * ref )
{
auto animation = Animation :: create();
for ( int i = 2; i <= 6; i ++)
{
String fileName = StringUtils:: format ("coc/characters_lowres/%d.0.png" , i);
animation ->addSpriteFrameWithFileName ( fileName. getCString ()); }
animation-> setDelayPerUnit (0.05f);
animation-> setLoops (-1);
auto animate = Animate :: create( animation ); auto pArr = PointArray :: create(5);
pArr-> addControlPoint (Point (100, 0));
pArr-> addControlPoint (Point (100, 200));
pArr-> addControlPoint (Point (300,200));
pArr-> addControlPoint (Point (300, 400));
auto move = CardinalSplineBy :: create(5, pArr , 1);
auto act = Spawn :: create( animate , move , nullptr); ccBezierConfig bezierCon ;
bezierCon. controlPoint_1 =CCPointMake (200, 150); //控制点1
bezierCon. controlPoint_2 =CCPointMake (200, 160); //控制点2
bezierCon. endPosition =CCPointMake (540, 100); // 结束位置
sp-> runAction (Spawn :: create( act , BezierBy :: create(3, bezierCon ), nullptr ));
}
屏幕上有10个精灵随机移动,精灵有对应的随机血量,相碰后血量少的精灵消失。最后仅仅剩下最后一个精灵。(考虑精灵封装成Enemy类)
使用C++自身的vector,没有在遍历的时候进行删除,而是标记删除。
在检測碰撞完成后再遍历一次vector对标记删除的元素进行删除。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
cocos2dx 3.1从零学习(五)——动画的更多相关文章
- cocos2dx 3.1从零学习(二)——菜单、场景切换、场景传值
回想一下上一篇的内容,我们已经学会了创建一个新的场景scene,加入sprite和label到层中.掌握了定时事件schedule. 我们能够顺利的写出打飞机的主场景框架. 上一篇的内容我练习了七个新 ...
- cocos2dx 3.1从零学习(一)——入门篇(一天学会打飞机)
没办法,浏览这么高,为啥没人投票呢?朋友们,我这篇文章參加了csdn博文大赛.喜欢的来点个赞吧!点击:http://vote.blog.csdn.net/Article/Details?article ...
- cocos2dx 3.1从零学习(三)——Touch事件(回调,反向传值)
第三讲 Touch 前面两篇我们学习的内容,足够我们做一款简单的小游戏.也能够说,我们已经入门了,能够蹒跚的走路了. 本篇将解说cocos2dx中非常重要的touch回调机制.你肯定记得第一章做定时器 ...
- cocos2dx 3.1从零学习(四)——内存管理(错误案例分析)
本篇内容文字比較较多,可是这些都是建立在前面三章写代码特别是传值的时候崩溃的基础上的.可能表达的跟正确的机制有出入,还请指正. 假设有不理解的能够联系我.大家能够讨论一下,共同学习. 首先明白一个事实 ...
- cocos2dx 3.1从零学习(六)——CocosStudio(VS2013project导入及环境设置)
导入libCocosStudio.libExtensions.libGUI 新建的project例如以下图: 加入现有项目 右键解决方式.例如以下操作: watermark/2/text/aHR0cD ...
- SVG 学习<五> SVG动画
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- es6从零学习(五):Module的语法
es6从零学习(五):Module的语法 ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量 一:es6模块化和 CommonJS 和 AMD 模块 (运行 ...
- TweenMax动画库学习(五)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- iOS学习——核心动画
iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...
随机推荐
- 火速提升Android仿真器的运行速度 ——仿真器Genymotion
一.问题概述 Android开发中会使用仿真器测试应用,但不管你使用Eclispe ADT还是Android Studio仿真器都是基于arm架构的,运行起来都很慢,光启动就要花费很多时间,都不知道它 ...
- 在Android中使用Android Ksoap2调用WebService
一.WebService介绍 WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方 ...
- HDU OJ Digital Roots 题目1013
/*Digital Roots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- CF 463D Gargari and Permutations [dp]
给出一个长为n的数列的k个排列(1 ≤ n ≤ 1000; 2 ≤ k ≤ 5).求这个k个数列的最长公共子序列的长度 dp[i]=max{dp[j]+1,where j<i 且j,i相应的字符 ...
- Cognos定时Email发送报表数据功能
1:进入 IBM Cognos Configuration-Data Access-Notification 2:设置如下(注意一定要是smtp服务,端口25,我这里是用了腾讯邮箱的smtp服务) 当 ...
- Android 色彩设计理念
色彩 色彩从当代建筑.路标.人行横道以及运动场馆中获取灵感.由此引发出大胆的颜色表达激活了色彩,与单调乏味的周边环境形成鲜明的对照. 强调大胆的阴影和高光.引出意想不到且充满活力的颜色. 色样 – 0 ...
- JS计算本周一和本周五的日期
代码不长: var today=new Date();var weekday=today.getDay(); var monday=new Date(1000*60*60*24*(1-weekd ...
- 使用Git下载Hadoop的到本地Eclipse开发环境
使用Git下载Hadoop的到本地Eclipse开发环境 博客分类: Hadoop *n*x MacBook Air hadoopgitmaveneclipsejava 问题场景 按照官网http: ...
- Electron 调用系统Office软件
通过打开本地空白文件的方式从而打开Office办公软件 const shell = require('electron').shell; const path = require('path'); s ...
- SQL之查询函数LOCATE、POSITION、INSTR、FIND_IN_SET、IN、LIKE