运行动作(基础总结)【七个基本动作】【三个动作列表】

①移动(Move)

MoveTo和MoveBy代表绝对坐标和相对坐标。

1 //在两秒内把节点(目标)移动到绝对坐标(50,0)
2 auto moveTo = MoveTo::create(2, Vec2(50, 0));
3 //节点运行动作
4 mySprite->runAction(moveTo);
5 // 在两秒内把节点(目标)移动到相对坐标(50,0)【相当于向右移动50像素】
6 auto moveBy = MoveBy::create(2, Vec2(50, 0));
7 //节点运行动作
8 mySprite->runAction(moveBy);

②旋转(Rotate)

1 //在两秒内,把节点旋转为 40度
2 auto rotateTo = RotateTo::create(2.0f, 40.0f);
3 mySprite->runAction(rotateTo);
4 //在两秒内,节点顺时针旋转40度
5 auto rotateBy = RotateBy::create(2.0f, 40.0f);
6 mySprite->runAction(rotateBy);

③缩放(Scale)

 1 // 在两秒后,缩放相对大小的3倍。
 2 auto scaleBy = ScaleBy::create(2.0f, 3.0f);
 3 mySprite->runAction(scaleBy);
 4 // 在两秒后,缩放相对大小的X轴2倍,Y轴3倍。
 5 auto scaleBy = ScaleBy::create(2.0f, 2.0f, 3.0f);
 6 mySprite->runAction(scaleBy);
 7 // 在两秒后,缩放绝对大小的3倍。
 8 auto scaleTo = ScaleTo::create(2.0f, 3.0f);
 9 mySprite->runAction(scaleTo);
10 // 在两秒后,缩放绝对大小的X轴2倍,Y轴3倍。
11 auto scaleTo = ScaleTo::create(2.0f, 2.0f, 3.0f);
12 mySprite->runAction(scaleTo);

④淡入淡出(Fade)

1 //一秒之后,节点渐渐显形
2 auto fadeIn = FadeIn::create(1.0f);
3 mySprite->runAction(fadeIn);
4 //二秒之后,节点渐渐隐形
5 auto fadeOut = FadeOut::create(2.0f);
6 mySprite->runAction(fadeOut);

⑤色调(Tint)

1 // 在两秒内,节点色调改变为RGB值
2 auto tintTo = TintTo::create(2.0f, 120.0f, 232.0f, 254.0f);
3 mySprite->runAction(tintTo);
4 // 在两秒内,节点色调改变相对RGB值(增加???)
5 auto tintBy = TintBy::create(2.0f, 120.0f, 232.0f, 254.0f);
6 mySprite->runAction(tintBy);

⑥动画(Animate)

 1 Vector<SpriteFrame*> animFrames;
 2 animFrames.reserve(4);
 3 animFrames.pushBack(SpriteFrame::create("Blue_Front1.png", Rect(0,0,65,81)));
 4 animFrames.pushBack(SpriteFrame::create("Blue_Left1.png", Rect(0,0,65,81)));
 5 animFrames.pushBack(SpriteFrame::create("Blue_Back1.png", Rect(0,0,65,81)));
 6 animFrames.pushBack(SpriteFrame::create("Blue_Right1.png", Rect(0,0,65,81)));
 7 // 从帧中创建动画
 8 Animation* animation = Animation::createWithSpriteFrames(animFrames, 0.1f);
 9 Animate* animate = Animate::create(animation);
10 //永远重复运行
11 mySprite->runAction(RepeatForever::create(animate));

⑦减速(Easing)

// 创建一个 MoveBy 动作给精灵往下的一个动作。
auto move = MoveBy::create(2, Vec2(200, dirs->getVisibleSize().height - newSprite2->getContentSize().height));
auto move_back = move->reverse();

// 创建一个 BounceIn Ease 动作
auto move_ease_in = EaseBounceIn::create(move->clone() );

// 创建一个 delay(等待)来放在两个基础动作之间
auto delay = DelayTime::create(0.25f);

// 创建一个动作序列,并且把各个基础动作放入序列里,用于运行
auto seq1 = Sequence::create(move_ease_in, delay, move_ease_in_back,
    delay->clone(), nullptr);

//永远的运行这个动作序列
mySprite->runAction(RepeatForever::create(seq1));

为了方便进行动作,所以有以下三个方式来进行动作:

Sequence(序列) 、 Spawn 、 Reverse(逆序)

(一)序列动作以及如何执行它

Sequence可以使一系列的动作对象按顺序执行。这一系列对象可以是任何数量的动作对象、函数,甚至是另外一个序列动作。函数?是的!Cocos2d-x中有一个CallFunc对象,它允许你创建一个function()函数并可以传递到Sequence中执行。这就允许你在序列动作对象中添加自己的函数功能,而不是仅仅局限于Cocos2d-x中提供的动作对象。如下例为序列动作被执行时的状态:

 1 // 创建几个动作
 2 auto jump = JumpBy::create(0.5, Vec2(0, 0), 100, 1);
 3
 4 auto rotate = RotateTo::create(2.0f, 10);
 5
 6 // 创建几个回调函数
 7 auto callbackJump = CallFunc::create([](){
 8 log("Jumped!");
 9 });
10
11 auto callbackRotate = CallFunc::create([](){
12 log("Rotated!");
13 });
14
15 // 创建一个序列,用行动和回调
16 auto seq = Sequence::create(jump, callbackJump, rotate, callbackRotate, nullptr);
17
18 // 运行它
19 mySprite->runAction(seq);

(二)Spawn

SpawnSequence类似,不同的是使用Spawn时所有动作是同时执行的。你可以有很多动作对象,甚至其他Spawn对象。

Spawn的作用与运行多个连续的runAction()语句所产生的结果是相同的。然而,使用Spawn的优点在于你可以将其放到一个序列中,从而实现特定的效果。

而runAction()是不可以的。将SpawnSequence结合使用讲会实现很多强大的功能。

 1 // 创建几个动作
 2 auto moveBy = MoveBy::create(10, Vec2(400,100));
 3 auto fadeTo = FadeTo::create(2.0f, 120.0f);
 4 auto scaleBy = ScaleBy::create(2.0f, 3.0f);
 5 // 创建一个 Spawn 去使用
 6 auto mySpawn = Spawn::createWithTwoActions(scaleBy, fadeTo);
 7 // 在一个序列中把所有的事情联系起来
 8 auto seq = Sequence::create(moveBy, mySpawn, moveBy, nullptr);
 9 // 运行它
10 mySprite->runAction(seq);

(三)Reverse(逆序)

Reverse的作用完全像它的名字一样,例如运行一系列动作时,你完全可以调用reserve()函数使动作逆序执行。然而,这并不只是简单的逆序运行,实际上还将原始的SequenceSpawn的属性也转换为逆序。

1 // 反向一个序列, spawn 或者一个动作
2 mySprite->runAction(mySpawn->reverse());

参考资料:http://cn.cocos2d-x.org/tutorial/show?id=2035

时间: 2024-10-21 01:00:22

运行动作(基础总结)【七个基本动作】【三个动作列表】的相关文章

第七章、函数基础之定义函数的三种方式03

目录 第七章.函数基础之定义函数的三种方式03 一.无参函数 二.有参函数 三.空函数 第七章.函数基础之定义函数的三种方式03 一.无参函数 定义函数时参数是函数体接收外部传值的一种媒介 在函数阶段括号没有参数就是无参函数.调用时不需要传入实参 如果函数体代码逻辑不需要依赖外部传入值,必须定义成无参函数 def func(): print('hello nick') func() # hello nick 二.有参函数 在函数阶段括号有参数就是有参函数.调用时需要传入实参 如果函数体代码逻辑需

redis使用基础(七) ——Redis管理

redis使用基础(七) --Redis管理 (转载请附上本文链接--linhxx) 一.安全性 1.运行环境 Redis以简洁为美,其安全性没有太多操作,要求在生产系统中外界不能直接连接Redis进行操作,而必须经过程序中转后,由程序进行操作. 即,redis要求运行在可信的环境中. redis服务器启动后,默认允许外界连接,可以修改其配置文件的bind,配置只能有一个路径进行连接,如bind 127.0.0.1,只允许本机连接.bind只能配置一个ip,因此设置应在防火墙中进行. 2.密码

框架基础:ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

C# 三个动作搞死WIN8【小白特别版本】

昨天弄我是小白我怕谁第一期的时候无意间发现win8的一个很明显的特征——按win键会进入一种便利模式(单击程序直接进) 嗯,这个很好,很方便,但... 众所周知,系统那些按键键让小黑们很头疼的呢?win键无疑前三(ctrl+alt+del alt+F4 等等...) 如果不通过一些比如用钩子之类的特殊处理就会很蛋疼,而win8把win键用途换了,这就是突破口! 三个动作:1. 开机启动(为了让软件能够持久的快乐的生活) 2.屏蔽任务管理器(不让你结束我,最好的防守就是进攻) 3.填充置顶(无边框

复习java基础第七天(反射)

一:目标 Ø理解 Class 类 Ø理解 Java 的类加载机制 Ø学会使用 ClassLoader 进行类加载 Ø理解反射的机制 Ø掌握 Constructor.Method.Field 类的用法 Ø理解并掌握动态代理 1.Class类 –对象照镜子后可以得到的信息:某个类的数据成员名.方法和构造器.某个类到底实现了哪些接口. 对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象. 一个 Class 对象包含了特定某个类的有关信息. –  Class 对象只能由系统建立对象.

iOS基础问答面试题连载(三)-附答案

「Tim的博客」iOS基础问答面试题连载(一)-附答案 「Tim的博客」iOS基础问答面试题连载(二)-附答案 「Tim的博客」iOS基础问答面试题连载(三)-附答案 「Tim的博客」iOS基础问答面试题连载(四) 这次的问题是网络多线程相关的哟,面试的时候也是必问的,大家多看看 11月24日修正一处错误:18.19题目一样,答案不一样(其实是两种理解,修改为最优的一种放上来.多谢读者提醒) 以下是一些自己收集的网络多线程方面比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基

Java web基础总结七之—— Filter与Listener

Java web基础总结七之-- Filter与Listener 一.Filter 1. Filter简介 Filter是Servlet体系中非常重要的一个技术.Filter的意思是过滤器,那么它过滤的是什么呢?就是web服务器管理的所有web资源.例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.它的代码逻辑执行在访问这些资源之前,从而进行一些特殊的操作.例如实现权限访问控制.编码和词汇的过滤等一些高级功能. Servlet API中提供了一

C#基础入门 七

C#基础入门 七 接口 由于C#语言不支持多重继承,所以可以使用接口模拟结构的继承,通过使用interface关键字,定义一个接口. interface USB { void Read(string[] datas); } 接口与抽象类非常类似,它定义了一些未实现的属性和方法,所有继承它的类都继承这些成员,在这个角度上,可以把接口理解为一个类的模板,接口最终的目的是起到统一的作用. 实现接口的任何类或结构必须实现其所有成员的方法: 接口不能直接实例化,但是可以通过指向子类间接实例化: 接口可以包

计算机网络基础——OSI七层网络模型

计算机网络基础——OSI七层网络模型 OSI的是什么: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架.定义于ISO/IEC 7498-1. OSI模型分为七层,建立七层模型的主要目的是为兼容不同的网络,通过将服务.接口.协议三个概念进行区分,使得不同系统不同的网络能实现可靠通

《计算机网络&amp;#183;自顶向下方法》第七版 第三章 课后习题与问题 答案

非官方答案,本人已尽最大努力(包括参考官方答案),使结果正确,如有错误,请大佬指出 正文: 3.1~3.3节 R1 a.如果只是简单想把信件送到,那么所有的头部信息只需要一个目的地址就够了,题目给出端口号四个字节,所有分组的头部那就只需四个字节 此协议规定,运输层的全部任务就是,将应用层的数据,切成最大1196字节的块,把每一块加上目的主机对应程序的端口号,并将得到的分组交付给网络层 在接收方,运输层将网络层报文取回,去掉头部信息,将数据拼接成应用层需要的信息,根据端口号交付给应用层即可 不过话