cocos2dx3.2 action基础用法(有趣)

动作到底该怎么玩?说的也就是runAction这货了。

如果你觉得本文还是在写像MoveTo,SacleTo这类动作的用法的话,那你就错了。那样不够厚道。当然了,像Sequence,Spawn这类的东西多少也是会涉及到一点的。那到底要写什么呢?我们的故事从这里开始。

首先我们创建俩精灵,就命名为boy 和 girl 吧。

auto size = Director::getInstance()->getWinSize();

auto boy = Sprite::create("boy.png");

boy->setPosition(Point(0,size.height/2));//将boy的位置设置在最左边

this->addChild(boy,1);

auto girl = Sprite::create("girl.png");

girl->setPosition(Point(size.width,size.height/2));//将girl的位置设置在最右边

this->addChild(girl,1);

(故事的开始,boy 和 girl互相都不认识,直到有一天,俩人相遇了)

boy 和 girl 同时运动到场景中间

boy->runAction(MoveTo::create(1.0f,Point(size.width/2-20,size.height/2)));//boy的速度明显比girl的快。

girl->runAction(MoveTo::create(1.5f,Point(size.width/2 +10,size.height/2)));

(boy看到girl的那一刻,惊呆了。他知道,她就是他一直在寻找的那个人。这,就是一见钟情)

boy用原地旋转360 + 全身血液膨胀来表达他的激动心情。表现方式有两种:

//1、边旋转边全身膨胀

boy->runAction(Spawn::create(RotateBy::create(1.0f,360),ScaleTo::create(1.0f,1.2f),NULL));

//2、先旋转完再全身膨胀

boy->runAction(Sequence::create(RotateBy::create(1.0f,360),ScaleTo::create(1.0f,1.2f),NULL));

(girl 看到 膨胀后的 boy,不禁觉得 boy好是高大威风(吐槽!),于是芳心暗许)

这里表现的动作就是 girl要在boy旋转+放大的动作做完后,才表现出她的...额,她的什么来着?对了,女的比较活泼,应该跳起来。恩,于是girl跳了起来。

//这里的重点是girl应该怎样才能在boy做完action后执行她的动作呢?有以下几种办法

//1、用延迟的DelayTime来实现,也就是boy运动完后延迟几秒,然后让girl运动

//延迟2.5s,用1s时间跳了3次,跳跃高度100像素,并且向右移动了30像素

girl->runAction(Sequence::create(DelayTime::create(2.5f),JumpBy::create(1.0f,Point(30,0),100,3),NULL));

//2、用回调函数实现,当boy完成后,写一个lambda表达式来实现girl要做的动作(lambda表达式的使用可以参考我上一篇博客)

boy->runAction(Sequence::create(RotateBy::create(1.0f,360),ScaleTo::create(1.0f,1.2f),

CallFunc::create([=]()

{

//用1s时间跳了3次,跳跃高度100像素,并且向右移动了30像素

girl->runAction(JumpBy::create(1.0f,Point(30,0),100,3));

}),NULL));

//3、用现成的接口TargetedAction();

auto jump = JumpBy::create(1.0f,Point(30,0),100,3);//先写一个跳跃的动作

auto targetAct = TargetedAction::create(girl,jump);//写一个目标动作,将动作执行人girl和要执行的动作jump放入其中

//将girl的目标动作放入boy的sequence里去

boy->runAction(Sequence::create(RotateBy::create(1.0f,360),ScaleTo::create(1.0f,1.2f),targetAct,NULL));

(最后的剧情就是俩人很快的就在一起了,虽然认识时间不长,但他俩有足够的时间来认识对方,了解对方。用四年的时间来证明自己的眼光是对的)

有情人终成眷属,故事的最后,允许我用一颗闪烁的心来表达对他们的祝福。希望他们能永远在一起!!!

//创建逐帧动画

auto spriteFrameCache = SpriteFrameCache::sharedSpriteFrameCache();

spriteFrameCache->addSpriteFramesWithFile("heart.plist");  //将动画图片的plist放入缓存中

SpriteFrame* frame = NULL;

auto frameArray = Array::create();

for(int i=0;i<10;i++)

{

frame = spriteFrameCache->spriteFrameByName(CCString::createWithFormat("%s%d.png","heart",i)->getCString());

frameArray->addObject(frame);

}

auto animation = Animation::createWithSpriteFrames(frameArray,0.15f);

auto animate = Animate::create(animation);//创建一个动画

auto heard_sp = Sprite::create("heart.png");

heard_sp->setPosition(Point(size.width/2,size.height-200));

heard_sp->runAction(animate);//播放动画

this->addChild(heard_sp,2);

故事简单,过程却没那么容易,结局也没想象的那么美好。

时间: 2024-08-08 05:34:49

cocos2dx3.2 action基础用法(有趣)的相关文章

Cocos数据篇[3.4](6) ——SQLite3数据库基础用法

[唠叨] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也是得心应手. 本文介绍一下SQLite3数据库的基础用法:增删改查. PS:另外对于SQLite的可视

Cocos2d-x数据篇06:SQLite3数据库基础用法

尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2430 [前言] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也

易优CMS:foreach的基础用法

[基础用法] 名称:foreach 功能:数据/记录循环输出标签(注:类似与volist标签,只是更加简单,没有太多额外的属性.) 语法: {eyou:channel type='top'} {eyou:foreach name='$field.children' item='field1'} <a href='{$field1.typeurl}'>{$field1.typename}</a> {/eyou:foreach} {/eyou:channel} 文件: 无 参数: na

sass基础用法

sass基础用法 SASS是什么 传统的CSS是一种单纯的描述性样式文件,然而SASS可以对CSS进行预编译处理. 在SASS源码中可以使用变量.函数.继承等动态语言的特性,并且可以编译成CSS文件. 安装与使用 安装 由于sass是ruby写的,所以想要使用sass就需要安装ruby环境.然后再使用gem安装sass. 输入下面的命令进行安装sass: gem install sass 可以使用sass -v命令查看sass的版本. 使用 新建一个后缀名为.scss源码文件,就可以编辑sass

游标基础用法

Create PROCEDURE P_InsertSubject@SubjectId intASDECLARE rs CURSOR LOCAL SCROLL FORselect studentid from student where StudentGradu = 1OPEN rsFETCH NEXT FROM rs INTO @tempStudentIDWHILE @@FETCH_STATUS = 0BEGINInsert SelSubject values (@SubjectId,@temp

sed命令基础用法

    sed(Stream EDitor)简介 sed是一个流编辑器编辑器,本身是一个管道命令,主要以行为单位处理文本文件,可以将数据进行替换.删除.新增.选取等特定工作:sed并不会处理文本文件本身,而是每当处理一个文件时,按顺序逐行读取到模式空间(内存)中,而后在模式空间中完成编辑,把编辑的结果输出到屏幕上,接着处理下一行,反复操作,直到文件结尾. 模式空间:将读取的内容放在内存中的一块区域编辑,这些内存空间就称为模式空间 格式: sed [options]    'Address Com

2017.04 vue学习笔记---08表单控件绑定---基础用法

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> div{ margin-bottom: 30px; } </style> <script src="js/vue.js"></script> <

UIButton的最基础用法

UIButton的最基础用法 UIButton (1) 创建显示一个Button      //演示UI中按钮类UIButton使用 //需求: 想要在界面上显示一个按钮 //解决:   使用UIButton按钮类  //<1>创建按钮,一般需要指定按钮的风格 //系统样式的按钮:  UIButtonTypeSystem //如果创建带图片的: 一般选用UIButtonTypeCustom //圆角矩形: ios7不再使用UIButtonTypeRoundedRect //UIButtonTy

Vue组件基础用法

前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需,使用不同的组件来拼接页面.这种开发模式使前端页面易于扩展,且灵活性高,而且组件之间也实现了解耦.本文将详细介绍Vue组件基础用法 概述 组件是一个自定义元素或称为一个模块,包括所需的模板.逻辑和样式.在HTML模板中,组件以一个自定义标签的形式存在,起到占位符的功能.通过Vue.js的声明式渲染后,