1. CCAction是cocos2d-x中的动作类,继承自CCObject,动作类必须依托与CCNode及其子类对象来发回作用。CCAction的子类包括有限时间动作CCFiniteTimeAction、跟随CCFollow、移动速度CCSpeed,其中CCFiniteTimeAction包括瞬时动作CCActionInstant和延时动作CCActionInterval。

2. CCAction的子类CCActionInstant是瞬时动作类,表示直接调用结果的动作,中间不产生动画效果;而CCActionInterval的动作过程会形成动画效果。

2. 1 CCNode实例产生移动动作的步骤:

(1) 通过CCActionInterval的子类的create函数,传入相应参数,创建相应的动作实例。

(2) 调用CCNode类的runAction(action)函数,将action实例传入,执行相应动作。

2.2 CCActionInterval的子类中很多都是XXXTo和XXXBy的类,通常XXXBy是XXXTo的子类,其中XXXTo是动作的绝对执行,而XXXBy是动作相对执行。

如CCActionInterval* moveto = CCMoveTo::create(2, ccp(10,10));

CCActionInterval* moveby = CCMoveBy::create(2, cpp(10,10));

CCNode类实例执行moveto动作时,不论当前所在位置,是直接移动到点(10,10)处,而执行moveby动作时,是在当前位置的基础上,在x和y轴都移动10个单位。如果原本所在点为(50,50),则执行moveto后位置为(10,10),而执行moveby后位置为(60,60).

2.3 通常XXXTo的reverse()方法为空,而XXXBy的reverse()方法获得一个逆动作。

3. 组合动作类包括CCSequence、CCSpawn、CCRepeat和CCRepeatForever

3.1 CCSequence表示一个动作执行序列,定义动作序列,使用CCArray数组或者传入所有动作,最后结尾参数设置为NULL,可以执行多个动作

CCFiniteTimeAction* seq = CCSequence::create(action1, action2, NULL);

sprite->runAction(seq);

3.2 CCSpawn表示被合成的动作同时进行,定义方法与CCSequence类似。

CCAction* spawn  = CCSpawn::create(CCJumpBy::create(2, ccp(300,0), 50, 4), CCRotateBy::create(2, 720), NULL);

sprite->runAction(spawn);

3.3 CCRepeat 和CCRepeatForever使动作重复进行,CCRepeat类可以指定重复次数,CCRepeatForever则是一直重复。

CCActionInterval* repeat = CCRepeat::create((CCFiniteTimeAction*)seq->copy()->autorelease(), 10);

sprite->runAction(repeat);

4. 跟随动作CCFollow

CCFollow是一个节点跟随另一个节点的动作。

sprite->runAction(firstAction);

this->runAction(CCFollow::create(sprite, CCRectMake(0, 0, 100,100)));

第一个参数是跟随的节点,第二个参数是运动的边界。

5. 可调整速度动作CCSpeed类

CCSpeed类不是一个独立的动作,它是对目前动作的一个包装,可以实现慢动作和快进效果。

6. 动作延时类CCDelayTime

CCDelayTime就是使动作咽喉一段固定时间。

CCActionInterval* delay = CCSequence::create(moveto, CCDelayTime::create(2), moveto), NULL);

sprite->runAction(delay);

create函数传入的参数即延后的秒数。

7. 改变动作执行对象CCTargetedAction

通常默认的动作执行对象是调用runAction的对象,而CCTargetedAction可以改变动作执行对象。

CCTargetedAction* t = CCTargetedAction::create(sprite2, moveto);

sprite->runAction(CCSequence::create(moveto, t, moveto, NULL));

sprite先moveto,然后sprite2执行moveto,最后sprite执行moveto。

8. 函数回调动作CCCallFunc

动作完成后需要做的一些数据处理可以通过CCCallFunc及其子类实现。

CCCallFunc其回调函数不含参数,CCCallFuncN以CCNode指针为参数,CCCallFuncND则是以CCNode指针和一个数据指针做参数。

转载于:https://www.cnblogs.com/litterrondo/archive/2013/05/22/3093677.html

Cocos2D-x(3)——动作类备忘相关推荐

  1. Cocos2D引擎学习-动作类的学习(一)

    首先,动作类不会单独存在.动作类的对象需要作用在精灵丶图层等对象上才能发挥作用.动作类包含有许多类型,包括位移丶缩放和旋转 CCAction为所有动作的父类 基础瞬时动作 CCFlipX :X轴镜像翻 ...

  2. 常用Apache Commons工具类备忘

    常用Apache Commons工具类 ----------------------------------------------------------------- 例如:commons.lan ...

  3. adb bugreport保存位置_图文教程:PC利用adb工具通过CMD命令控制手机动作(备忘笔记)...

    一.通过以下链接下载adb工具包 http://adbshell.com/downloads 1.ADB Kits (525 KB) 2.ADB Driver Installer 二.把两个压缩包解压 ...

  4. adb指令通过uid控制_图文教程:PC利用adb工具通过CMD命令控制手机动作(备忘笔记)...

    一.通过以下链接下载adb工具包 http://adbshell.com/downloads 1.ADB Kits (525 KB) 2.ADB Driver Installer 二.把两个压缩包解压 ...

  5. 对 zebra 的一点理解 thread+socket+read部分 (备忘)

    一.主要从 daemon 的 thread角度 分析备忘. 注意: 具体函数功能详见附录,分析要结合zebra源代码(thread.c中). 1.每个daemon(e.g igmp-snooping. ...

  6. Photoshop2023常用快捷键和使用技巧(作为备忘)

    自己使用PS多年积累下来的史上最全快捷键及个人总结的使用技巧(支持最新版PS2023),作为备忘,如果能顺便帮助到您,望给我个赞!(你如果能把下面东西全部记住并理解,那么你的PS技术层面上的基本功就算 ...

  7. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)

    为什么80%的码农都做不了架构师?>>>    一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...

  8. php7和7.1,PHP7.0和7.1 部分新增特性备忘代码分享

    以下分别备忘 PHP 7.0 & 7.1 版本的部分新增特性. PHP 7.0$foo = null; $bar = $foo ?? 123; // 相当于 $bar = isset($bar ...

  9. git-flow 流程 备忘清单

    关于 git-flow 是一个 git 扩展集,按 Vincent Driessen 的分支模型提供高层次的库操作. 查看详情 ★ ★ ★ 这个备忘清单展示了 git-flow 的基本操作和效果. ★ ...

最新文章

  1. 程序员编程如何入门、进阶?
  2. STL 之includes,set_intersection,set_union,set_difference,set_symmetric_difference
  3. Asp.Net在导入外部脚本
  4. 用Java开发自己的Kubernetes控制器,想试试吗?
  5. duty:用户名是手机号显示空格
  6. lua mysql发包_如何发包
  7. Maven与Eclipse的整合和简单的Maven项目(二)
  8. 手机数据网络慢怎么修改服务器,手机网速慢怎么回事 这三种方法可以一试
  9. 黑苹果安装后不能启动Windows解决
  10. 续航超1000km,极氪成为宁德时代麒麟电池全球量产首发品牌 | 美通社头条
  11. Word文档导出(使用固定模板)
  12. 解决 Jupyter notebook 运行SHELL 命令(!xxx), 出错: OSError: “/bin/bach“ shell not found
  13. Continuous Integration 对 ABAP 技术栈来说意味着什么
  14. SpringCloud_JZZ_MBY
  15. 《贝叶斯思维:统计建模的Python学习法》——2.3 贝叶斯框架
  16. wwbizsrv.exe-应用程序错误
  17. Spring的四种注入方式
  18. 【ROS小车8】_小车硬件组成
  19. OSChina 周一乱弹 —— 终于可以尝尝冷水泡面了
  20. 教程:动手用自己电脑搭建一个网站 (nat123 花生壳 动态域名 个人电脑做服务器)...

热门文章

  1. get_locked_objects_rpt.sql
  2. ntv.js框架(第三章) - 机顶盒HTML和CSS编写注意事项
  3. CCNA 02 OSI七层
  4. oschina导出博客获取图片
  5. 最新优质网站联盟大全(个人站长必知)
  6. Quest 公司的Shareplex 与 GoldenGate比较
  7. android native crash的处理机制
  8. 【08月14日】A股ROE最高排名
  9. Java——去除字符串中的中文
  10. man命令手册打开以后的使用方法