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中,都有大量应用.核心动画所在的位置如下图 ...
随机推荐
- 检测 USB 设备拨插的 C# 类库:USBClassLibrary
这是采用C#开发的一个USB库,使您可以管理USB设备的连接和分离事件,探测自己的设备.可以运行在Windows XP和Windows7 64位系统下. 01 private void USBPort ...
- 一步步教你如何在 Visual Studio 2013 上使用 Github
介绍 我承认越是能将事情变简单的工具我越会更多地使用它.尽管我已经知道了足够的命令来使用Github,但我宁愿它被集成到IDE中.在本教程中,我会告诉你使用Visual Studio 2013如何实现 ...
- python3 UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f9e0' in position 230: illegal multibyte sequence
最近在保存微博数据到(csv文件)时报错: UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f9e0' in positio ...
- eclipse启动优化文章集合
1. eclipse启动优化,终于不那么卡了! http://www.cfei.net/archives/445
- LeetCode【7】.Reverse Integer--java实现
Reverse Integer 题目要求:给定一个int 类型值,求值的反转,例如以下: Example1: x = 123, return 321 Example2: x = -123, ...
- yeoman-angular-gulp
1.安装 yeoman npm install -g yo gulp bower 2.安装genarate-angular //npm install generator-angular npm in ...
- Android Studio中安装Genymotion模拟器
Genymotion的安装: Genymotion无疑是目前最快最好用的模拟器.官网下载地址:https://www.genymotion.com/ 进到官网却找不到免费下载地址了,都需要money, ...
- UISlider设置按钮透明
UISlider *aslider = [[UISlider alloc]initWithFrame:kCR(, , , )]; [aslider setValue:0.5]; [aslider se ...
- Java File 与 Bytes相互转换
public static byte[] fileToBytes(String filePath) { byte[] buffer = null; File file = new File(fileP ...
- 圆形Camera预览实现
需求 最近有个需求要求界面上使用圆形相机预览进行面部检测 , 具体需求如下图 关于Camera之前接触得比较多 , 主要就是通过SurfaceView显示预览视图 , 因此需要展示圆形预览界面, 只需 ...