19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
auto sprite = Sprite::create("sprite.png");
auto action = MoveTo::create(1.0f, Point(0, 0));
sprite->runAction(action);
的代码例如以下:
FiniteTimeAction* placeAction = Place::create(Point(100, 100));
Action* action = Sequence::create(placeAction, curveMove, NULL);
FiniteTimeAction* flipXAction = FlipX::create(true);
Action* action = Sequence::create(curveMove, flipXAction, curveMove->reverse(), NULL);
FiniteTimeAction* hideAction = Hide::create();
Action* action = Sequence::create(curveMove, hideAction, NULL);
C 函数)。
表示运行动作的对象。
不仅有一个节点參数, 另一个自己定义參数 (Node*与 void*)。
__CCCallFuncO调用的方法则仅仅包括一个 Ref*类型的參数。
Ref參数。
nodeToRemove 对象。在 removeSelf 方法中须要訪问运行此动作的精灵,因此我们就採用 CallFuncN 来调用removeSelf 方法。
MoveTo 将对象移动到一个特定的位置。
static MoveTo* create(float duration, const Point& position);
static MoveBy* create(float duration, const Point& deltaPosition);
它们的初始化方法例如以下:
static JumpTo* create(float duration, const Point& position, float height, int jumps);
static JumpBy* create(float duration, const Point& position, float height, int jumps);
表示最大高度,jumps 表示跳跃次数。
运动的轨迹由贝塞尔曲线描写叙述。
static BezierTo* create(float t, const ccBezierConfig& c);
static BezierBy* create(float t, const ccBezierConfig& c);
控制线越长,它所控制的曲线离控制线越近。

BezierTo 或 BezierBy 的初始化方法中:
ccBezierConfig bezier;
bezier.controlPoint_1 = Point(20, 150);
bezier.controlPoint_2 = Point(200, 30);
bezier.endPosition = Point(160, 30);
FiniteTimeAction * beizerAction = BezierTo::create(actualDuration / 4, bezier);
scale 属性。
相应的初始化方法为:
static ScaleTo* create(float duration, float s);
static ScaleBy* create(float duration, float s);
static RotateTo* create(float duration, float deltaAngle);
static RotateBy* create(float duration, float deltaAngle);
static FadeIn* create(float d);
static FadeOut* create(float d);
其初始化方法为:
static FadeTo* create(float duration, GLubyte opacity);
static TintTo* create(float duration, GLubyte red, GLubyte green, GLubyte blue);
static TintBy* create(float duration, GLshort deltaRed, GLshort deltaGreen, GLshort deltaBlue);
0~255。
static Blink* create(float duration, int blinks);
方法运行。
Repeat 与 RepeatForever 这两个方式反复运行:
static Repeat* create(FiniteTimeAction *action, unsigned int times);
static RepeatForever* create(ActionInterval *action);
static Spawn* create(FiniteTimeAction *action1, ...) CC_REQUIRES_NULL_TERMINATION;
static Spawn* createWithTwoActions(FiniteTimeAction *action1, FiniteTimeAction *action2);
第二个则仅仅能指定两个动作复合。
不须要在最后一个动作后紧跟 NULL。
static Sequence* create(FiniteTimeAction *action1, ...) CC_REQUIRES_NULL_TERMINATION;
static Sequence* createWithTwoActions(FiniteTimeAction *actionOne, FiniteTimeAction *actionTwo);
而是定义了m_pOne和m_pTwo两个动作成员变量。
假设我们创建了两个动作的组合,
sequence = Sequence::create(action1, action2, action3, action4, NULL);
Sequence s1 = Sequence::createWithTwoActions(action1, action2);
Sequence s2 = Sequence::createWithTwoActions(s1, action3);
sequence = Sequence::createWithTwoActions(s2, action4);
Spawn* Spawn::create(const Vector<FiniteTimeAction*>& arrayOfActions)
{
Spawn* ret = nullptr;
do
{
auto count = arrayOfActions.size();
CC_BREAK_IF(count == 0);
auto prev = arrayOfActions.at(0);
if (count > 1)
{
for (int i = 1; i < arrayOfActions.size(); ++i)
{
prev = createWithTwoActions(prev, arrayOfActions.at(i));
}
}
else
{
// If only one action is added to Spawn, make up a Spawn by adding a simplest finite time action.
prev = createWithTwoActions(prev, ExtraAction::create());
}
ret = static_cast<Spawn*>(prev);
}while (0); return ret;
}
void Spawn::update(float time)
{
if (_one)
{
_one->update(time);
}
if (_two)
{
_two->update(time);
}
} Spawn* Spawn::reverse() const
{
return Spawn::createWithTwoActions(_one->reverse(), _two->reverse());
}
static DelayTime* create(float d);
static Speed* create(ActionInterval* action, float speed);
RepeatForever* repeat = RepeatForever::create(animation);
Speed* speed = Speed::create(repeat, 1.0f);
speed->setTag(action_speed_tag);
sprite->runAction(speed);
然后,我们又使用
repeat 动作创建了一个 CCSpeed 变速动作。
1,目标动作的速度将不会改变。
Speed * speed = sprite->getActionByTag(action_speed_tag);
speed->setSpeed(2.0f);
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFvbWVuZ3podQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


以 Sine 缓冲为例。下面代码实现了 InSine 变速运动:
EaseSineIn* sineIn = EaseSineIn::create(action);
sineIn->setTag(action_sine_in_tag);
sprite->runAction(sineIn);
//! called every frame with it's delta time. DON'T override unless you know what you are doing.
virtual void step(float dt); /**
called once per frame. time a value between 0 and 1 For example:
- 0 means that the action just started
- 0.5 means that the action is in the middle
- 1 means that the action is over
*/
virtual void update(float time);
Menu* menu = Menu::create(item0, item1, item2, item3, NULL);
menu->alignItemsVerticallyWithPading(5.0f);
menu->setPosition(ccp(size.width/2, size.height));
menu->setTag(menu_pause_tag);
this->addChild(menu, 5);
MoveTo* move = MoveTo::create(0.5f, Point(size.width/2, size.height/2)); Action* action = EaseExponentialOut::create(move);
menu->runAction(action);
Size size = Director::getInstance()->getWinSize();
Menu* menu = (Menu*)this->getChildByTag(menu_pause_tag);
Point point = Point (size.width/2, size.height + menu->getContentSize().height/2);
MoveTo* move = MoveTo::create(0.5f, point); Action* action = EaseExponentialIn::create(move);
menu->runAction(action);
19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、的更多相关文章
- [置顶] cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面
cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面 写给大家的前言,在学习cocos2d-x的时候自己走了很多的弯路,也遇到了很多很多问题,不 ...
- [置顶] cocos2d-x 3.0游戏开发xcode5帅印博客教学 004.[HoldTail]主角的上下飞行跟移动
cocos2d-x 3.0游戏开发xcode5帅印博客教学 004.[HoldTail]主角的上下飞行跟移动 写给大家的前言,在学习cocos2d-x的时候自己走了很多的弯路,也遇到了很多很多问题,不 ...
- 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...
- 13、Cocos2dx 3.0游戏开发找小三之3.0中的Director :郝萌主,一统江湖
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中.我们具 ...
- 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...
- 1、Cocos2dx 3.0游戏开发找小三之前言篇
尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用 ...
- 3、Cocos2dx 3.0游戏开发找小三之搭建开发环境
尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27107295 搭建开发环境 使用 Cocos2d- ...
- 12、Cocos2dx 3.0游戏开发找小三之3.0中的生命周期分析
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706303 生命周期分析 在前面文章中我们执行了第 ...
- 1、Cocos2dx 3.0游戏开发三找一小块前言
尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用 ...
随机推荐
- libev 学习使用
libev 简单的I/O库. a high performance full featured event loop written in c libev 的大小也比 libevent 小得多并且自 ...
- Laravel5.5配置使用redis
1.安装redis linux上redis的安装与配置 2.安装redis客户端 composer require predis/predis或者安装 PhpRedis PHP 扩展brew inst ...
- linux 设置svn钩子实现自动更新
一.svn安装设置 1.安装svn启动 yum install subversion 2.建个svn的根目录,因为项目不止一个 mkdir -p /home/svn/3.新建一个新的空的版本仓库(su ...
- scrapy模拟请求头
import random USER_AGENT_LIST=[ 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, lik ...
- Python爬链接
# -*- coding: utf-8 -*- """ Created on Wed Jan 11 17:21:54 2017 @author: PE-Monitor & ...
- A - Enterprising Escape 【BFS+优先队列+map】
The Enterprise is surrounded by Klingons! Find the escape route that has the quickest exit time, and ...
- swagger (九)
创建创建microservicecloud-swagger pom文件 eureka: client: #客户端注册进eureka服务列表内 service-url: defaultZone: htt ...
- 2、Django实战第2天:app设计
app设计:五大模块 users 用户管理 courses 课程管理 organization 机构和教师管理 operation 用户操作管理 新建上面4个模块的app manage.py@mxon ...
- n2n搭建手记-1-V1
搭建环境 supernode :阿里云主机一台 aly1(Centos 6.5) edg2node:美团云机器两台 mty1,mty2(Centos 7.0) Step-1 各机器安装subviers ...
- 索引(Index)
无索引的表就是一个无序的行集.比如下面的人员表中有一些数据: 这个表上没有索引,因此如果我们查找年龄等于17的人员时,必须查看表中的每一行,看它是否与所需的值匹配.这是一个全表扫描,很慢,如果表中只有 ...