Cocos2D-Android- 动作的处理
2015-12-06 21:19
387 查看
Cocos2D-Android- 动作的处理
基础
在cocos2d引擎中有一个动作类,CCAction是动作类的基类,动作是定义在节点(CCNode)上的,以节点为目标。
基本动作
Cocos2d提供的基本动作:瞬时动作、延时动作、运作速度。瞬时动作
就是不需要时间,马上就完成的动作。瞬时动作的共同基类是 InstantAction。Cocos2d提供以下瞬时动作:
放置 – Place
隐藏 – Hide
显示 – Show
CCHide ccHide=CCHide.action();// 隐藏
延时动作
延时动作就是指动作的完成需要一定时间。因此actionWithDuration 是延时动作执行时的第一个参数,延时动作的共同基类是 CCIntervalAction(包含了组合动作类)。
Cocos2d提供以下瞬时动作(函数命名规则是:XxxxTo: 意味着运动到指定的位置, XxxxBy:意味着运动到按照指定的 x、y 增量的位置。[x、y 可以是负值]):
移动到– CCMoveTo
移动– CCMoveBy
跳跃到– CCJumpTo 跳跃到设置终点位置和跳跃的高度和次数。
跳跃- CCJumpBy 设置终点位置和跳跃的高度和次数。
贝塞尔 – CCBezierBy 支持 3 次贝塞尔曲线:P0-起点,P1-起点切线方向,P2-终点切线方向,P3-终点。
放大到 – CCScaleTo 设置放大倍数,是浮点型。
放大 – CCScaleBy
旋转到 – CCRotateTo
旋转 – CCRotateBy
闪烁 – CCBlink 设定闪烁次数
色调变化到 – CCTintTo
色调变换 – CCTintBy
变暗到 – CCFadeTo
由无变亮 – CCFadeIn
由亮变无 – CCFadeOut
代码示例
CCSprite sprite = getSprite(); //CCMoveTo与CCMoveBy // 参数1 移动的时间 单位秒 参数2 移动的目的地 CCMoveTo ccMoveTo=CCMoveTo.action(2, CCNode.ccp(200, 0)); // 参数1 移动的时间 单位秒 参数2 坐标的改变 CCMoveBy ccMoveBy=CCMoveBy.action(2, CCNode.ccp(200, 0)); sprite.runAction(ccMoveTo); //CCRotateTo与CCRotateBy CCRotateTo rotateTo=CCRotateTo.action(3, 240); //偷懒: 即会逆时针旋转60度,到达目的地 CCRotateBy by=CCRotateBy.action(3, 240); //不偷懒,就是顺时针旋转240度 //CCJumpBy // 1 时间 单位秒 2 目的地 3 高出的高度 4 跳跃的次数 CCJumpBy ccJumpBy=CCJumpBy.action(4, ccp(200, 100), 100, 2); //CCBezierBy CCBezierConfig c=new CCBezierConfig(); c.controlPoint_1=ccp(0, 0); c.controlPoint_2=ccp(100, 100); c.endPosition=ccp(200, 0); CCBezierBy bezierBy=CCBezierBy.action(2, c); //延时1秒的动作 CCDelayTime delayTime=CCDelayTime.action(1);//停留一秒钟
组合动作
按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作。组合动作包括以下几类:
序列 – CCSequence
Sequence 的使用非常简单,该类也从 CCIntervalAction 派生,本身就可以被 CocosNode 对象执行。该类的作用就是线序排列若干个动作,然后按先后次序逐个执行。
同步 – Spawn
Spawn 的使用非常简单,该类也从 IntervalAction 派生,本身就可以被CocosNode 对象执行。该类的作用就是同时并列执行若干个动作,但要求动作都必须是可以同时执行的。
比如:移动式翻转、变色、变大小等。需要特别注意的是,同步执行最后的完成时间由基本动作中用时最大者决定。
重复有线次数 – Repeate
重复有限次数的动作,该类也从 IntervalAction 派生,可以被 CocosNode 对象执行。
反动作 – Reverse
反动作就是反向(逆向)执行某个动作,支持针对动作序列的反动作序列。反动作不是一个专门的类,而是 CCFiniteAction 引入的一个接口。不是所有的类都支持反动作,
XxxxTo 类通常不支持反动作,XxxxBy 类通常支持。
动画 – Animation
动画就是让精灵自身连续执行一段影像,形成模拟运动的效果:行走时的精灵状态、打斗时的状态等。
无限重复 – RepeatForever
RepeatForever 是从 Action 类直接派生的,因此无法参与序列和同步;自身也无法反向执行。该类的作用就是无限期执行某个动作或动作序列,直到被停止。
//CCSequence, Reverse,RepeatForever CCSprite sprite = getSprite(); sprite.setPosition(0, 100); CCMoveBy ccMoveBy=CCMoveBy.action(2, CCNode.ccp(200, 0)); CCMoveBy reverse = ccMoveBy.reverse(); //获取相反的动作 CCSequence sequence=CCSequence.actions(ccMoveBy, reverse);//CCSequence 串行动作 //CCRepeatForever forever=CCRepeatForever.action(sequence); //让串行动作永不停止循环了 sprite.runAction(sequence); //Animation与序列帧的播放 //创建要运行的序列帧 ArrayList<CCSpriteFrame> frames = new ArrayList<CCSpriteFrame>(); String format = "z_1_%02d.png";// 02d 占位符 可以表示两位的整数 如果不足两位前面用0补足 for (int i = 1; i <= 7; i++) { CCSpriteFrame displayedFrame = CCSprite.sprite( String.format(format, i)).displayedFrame(); frames.add(displayedFrame); } // 配置序列帧的信息 参数1 动作的名字(给程序员看的) 参数2 每一帧播放的时间 单位秒 参数3 所有用到的帧 CCAnimation anim = CCAnimation.animation("走路", 0.2f, frames); CCAnimate animate = CCAnimate.action(anim); // 序列帧动作默认是永不停止的循环 //CCAnimate animate = CCAnimate.action(anim, false); //不是永不停止的循环 CCRepeatForever forever = CCRepeatForever.action(animate); sprite.runAction(forever);
速度变化
基本动作和组合动作实现了针对精灵的各种运动、动画效果的改变,但这样的改变的速度是不变的,通过 CCEaseAction 为基类的类系
和 CCSpped 类我们可以很方便的修改精灵执行劢作的速度:由快至慢还是由慢至快。
EaseIn 由慢至快。
EaseOut 由快至慢
EaseInOut 由慢至快再由快至慢。
EaseSineIn由慢至快。
EaseSineOut 由快至慢
EaseSineInOut 由慢至快再由快至慢。
EaseExponentialIn 由慢至极快。
EaseExponentialOut 由极快至慢。
EaseExponentialInOut 由慢至极快再由极快至慢。
Speed 人工设定速度,还可通过 SetSpeed 不断调整。
//CCEaseIn(加速) CCEaseOut(减速) CCMoveTo ccMoveTo=CCMoveTo.action(10, CCNode.ccp(200, 0)); CCEaseIn easeIn=CCEaseIn.action(ccMoveTo,9); //让移动按照有一定加速度去移动 getSprite().runAction(easeIn);
扩展动作(很有用)
延时动作 – Delay ,比如在动作序列中增加一个时间间歇函数调用,
函数在动作序列中间或者结束调用某个函数,执行任何需要执行的任务:动作、状态修改等。
//当action动作执行完毕后,调用本类的“loadWelcome”函数 CCSequence ccSequence=CCSequence.actions(action,CCCallFunc.action(this, "loadWelcome"));
loadWelcome函数的要求
不可以是私有的
应带有Object类型的参数
相关文章推荐
- cocos2dx骨骼动画Armature源码剖析(一)
- cocos2dx骨骼动画Armature源码剖析(二)
- 剖析iOS开发中Cocos2d-x的内存管理相关操作
- iOS 5 cocos2d 游戏开发 3ff8 实战:第4章 你的第一个游戏
- quick-cocos2d-x for mac开发环境安装配置
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- Cocos Studio的动画系统介绍
- OGEngine新版发布,推开发者服务平台
- Cocos2d 中 fnt文件生产工具 Bitmap Font Generator
- CCLOG调试方法与参数说明
- 你的第一个cocos2d游戏
- [Cocos2d] CCProgressTimer进度条
- [Cocos2d] Cocos2d 开发常用工具集
- 浅谈cocos2d画图
- cocos2d 环境搭建 ios xocde
- iOS cocos2d 2游戏开发实战(第3版)