理论部分

时间间隔动作(ActionInterval)是一个在一段时间内执行的动作。 它有一个开始时间和完成时间。完成时间等于起始时间加上持续时间。

ActionInterval的子类
与位置有关的动作类;
JumpBy,JumpTo,MoveBy,MoveTo,BezierBy,BezierTo,CardinalSplineBy,CardinalSplineTo
与缩放有关的动作类;
ScaleTo,ScaleBy,
与旋转有关的动作类;
RotateBy, RotateTo
与倾斜有关的动作类
SkewTo,SkewBy
与颜色变化有关的动作类
FadeTo,FadeIn,FadeOut,TintBy,TintTo
序列动作有关的动作类
Sequence,Spawn
与时间有关的动作类
DelayTime,Repeat, RepeatForever,ReverseTime,ActionFloat
与进度有关的动作类
ProgressFromTo, ProgressTo
与可见性有关的动作类
Blink
与网格有关的动作类
GridAction
与缓动有关的动作类
ActionEase
与动画有关的动作类
Animate
与3D有关的动作类
ActionCamera,Animate3D
有振幅有关的动作类
AccelAmplitude, AccelDeccelAmplitude,DeccelAmplitude
其他相关动作
ActionTween,TargetedAction

代码部分

JumpBy,JumpTo类的API

JumpBy动作可以模拟抛物线跳运动移动一个节点对象。

static JumpBy * create (float duration, //持续时间,以秒为单位。
            const Vec2 &position, //跳跃的距离。
            float height, //跳跃的高度。
            int jumps) //跳跃的次数。

JumpTo动作可以模拟抛物线跳运动移动一个节点对象到特定的位置。

static JumpTo * create (float duration, //持续时间,以秒为单位。
            const Vec2 &position, //跳跃的目的地的位置。
            float height, //跳跃的高度。
            int jumps) //跳跃的次数。

实例:

    auto actionTo = JumpTo::create(2, Vec2(300,300), 50, 4);
auto actionBy = JumpBy::create(2, Vec2(300,0), 50, 4);

MoveBy,MoveTo类的API

static MoveBy * create (float duration, //持续时间,以秒为单位。
            const Vec2 &deltaPosition) //位移,Vec2类型。
static MoveBy * create (float duration, //持续时间,以秒为单位。
            const Vec3 &deltaPosition) //位移,Vec3类型。

static MoveTo * create (float duration, //持续时间,以秒为单位。
            const Vec2 &position) //二维世界的目标位置。
static MoveTo * create (float duration, //持续时间,以秒为单位。
            const Vec3 &position) //三维世界的目标位置。

实例:

    auto s = Director::getInstance()->getWinSize();
auto actionTo = MoveTo::create(, Vec2(s.width-, s.height-));
auto actionBy = MoveBy::create(, Vec2(,));

BezierBy,BezierTo类的API

BezierBy动作可以将一个节点沿三次贝塞尔曲线移动一定距离。

static BezierBy * create (float t, //持续时间,以秒为单位。
            const ccBezierConfig &c) //贝塞尔曲线配置。

BezierTo动作可以将一个节点沿三次贝塞尔曲线移动到特定位置。

static BezierTo * create (float t, //持续时间,以秒为单位。
            const ccBezierConfig &c) //贝塞尔曲线配置。

实例:

    // sprite 1
ccBezierConfig bezier;
bezier.controlPoint_1 = Vec2(, s.height/);
bezier.controlPoint_2 = Vec2(, -s.height/);
bezier.endPosition = Vec2(,); auto bezierForward = BezierBy::create(, bezier);
auto bezierBack = bezierForward->reverse();
auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack, nullptr)); // sprite 2
_tamara->setPosition(,);
ccBezierConfig bezier2;
bezier2.controlPoint_1 = Vec2(, s.height/);
bezier2.controlPoint_2 = Vec2(, -s.height/);
bezier2.endPosition = Vec2(,); auto bezierTo1 = BezierTo::create(, bezier2);

CardinalSplineBy,CardinalSplineTo类的API

CardinalSplineBy动作是一个让目标节点沿Cardinal Spline样条曲线移动一定距离的动作。

static CardinalSplineBy * create (float duration, //以秒为单位的持续时间。
                PointArray *points, //控制点数组。
                float tension) //曲线张力。

CardinalSplineTo动作是一个让目标节点沿Cardinal Spline样条曲线到达目的地的动作。

static CardinalSplineTo * create (float duration,
                PointArray *points, //控制点数组。
                float tension) //曲线张力。

实例:

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

    auto array = PointArray::create();
array->addControlPoint(Vec2(, ));
array->addControlPoint(Vec2(s.width/-,));
array->addControlPoint(Vec2(s.width/-,s.height-));
array->addControlPoint(Vec2(, s.height-));
array->addControlPoint(Vec2(, )); auto action = CardinalSplineBy::create(, array, );

注,CardinalSplineBy,CardinalSplineTo有个子类继承者CatmullRomTo,CatmullRomBy,区别就是设置默认设定张力0.5,不可改。

ScaleTo,ScaleBy类的API

ScaleTo动作通过修改scale属性让一个节点对象的缩放到特定大小。

static ScaleTo * create (float duration, //持续时间,以秒为单位。
            float s) //X和Y轴的缩放比例。

static ScaleTo * create (float duration, //持续时间,以秒为单位。
            float sx, //X轴缩放比例。
            float sy) //Y轴缩放比例。

static ScaleTo * create (float duration, //持续时间,以秒为单位。
            float sx, //X轴缩放比例。
            float sy, //Y轴缩放比例。
            float sz) //Z轴缩放比例。

实例:

    auto actionTo = ScaleTo::create(2.0f, 0.5f);
auto actionBy = ScaleBy::create(2.0f, 1.0f, 10.0f);

RotateBy, RotateTo类的API

RotateBy动作可以顺时针旋转一个节点对象,通过修改它的旋转属性。

static RotateBy * create (float duration, //持续时间,以秒为单位。
             float deltaAngle) //旋转角度。

static RotateBy * create (float duration, //持续时间,以秒为单位。
            float deltaAngleZ_X, //X轴旋转角度,以角度值计。
            float deltaAngleZ_Y) //Y轴旋转角度,以角度值计。

static RotateBy * create (float duration, //持续时间,以秒为单位。
             const Vec3 &deltaAngle3D) //三维旋转角度。

RotateTo动作用来旋转一个节点对象到一定角度,通过逐帧修改它的rotation属性。 旋转方向将由最短的角度决定。

static RotateTo * create (float duration, //持续时间,以秒为单位。
            float dstAngleX, //X轴的目标角度,以角度值计。
            float dstAngleY) //Y轴的目标角度,以角度值计。

static RotateTo * create (float duration, //持续时间,以秒为单位。
            float dstAngle) //目标角度,以角度值计。

static RotateTo * create (float duration, //持续时间,以秒为单位。
            const Vec3 &dstAngle3D) //三维旋转角度。

实例:

    auto actionTo = RotateTo::create(, , );
auto actionToBack = RotateTo::create(, , );
auto actionBy = RotateBy::create(, 0.0f, );

SkewTo,SkewBy类的API

SkewTo动作通过修改skewX和skewY属性倾斜一个节点对象到特定的倾斜角度

static SkewTo * create (float t, //持续时间,以秒为单位。
            float sx, //X轴目标倾斜角度。
            float sy) //Y轴目标倾斜角度。

SkewBy动作可以以一定角度倾斜一个节点。

static SkewBy * create (float t, //持续时间,以秒为单位。
            float deltaSkewX, //X轴倾斜角。
            float deltaSkewY) //Y轴倾斜角。

实例:

    auto actionTo = SkewTo::create(, 37.2f, -37.2f);
auto actionToBack = SkewTo::create(, , );
auto actionBy = SkewBy::create(, 0.0f, -90.0f);

FadeTo,FadeIn,FadeOut,TintBy,TintTo类的API

FadeTo(渐变)可以将一个实现了RGBAProtocol协议的对象从当前透明度渐变到指定透明度。

static FadeTo * create (float duration, //持续时间,以秒为单位。
           GLubyte opacity) //目标透明度,范围从0到255。

FadeIn(淡入)动作可以让一个实现RGBAProtocol协议的对象淡入,它使节点的当前透明度渐变到255。
static FadeIn* create (float d) //持续时间,以秒为单位。

FadeOut(淡出)动作可以让一个实现RGBAProtocol协议的对象淡出,它使节点的当前透明度渐变到0。
static FadeOut * create (float d) //持续时间,以秒为单位。

实例:

    auto fadeIn = FadeIn::create(1.0f);
auto fadeOut = FadeOut::create(1.0f);

TintTo动作可以让一个实现NodeRGB协议的对象变色到特定颜色。

static TintTo * create (float duration, //持续时间,以秒为单位。
            GLubyte red, //颜色的红色通道值,从0到255。
            GLubyte green, //颜色的绿色通道值,从0到255。
            GLubyte blue) //颜色的蓝色通道值,从0到255。
            static TintTo * create (float duration, //持续时间,以秒为单位。
            const Color3B &color) //一个Color3B类型颜色。

TintBy动作可以让一个实现NodeRGB协议的对象按一定差值改变其颜色。

static TintBy * create (float duration, //持续时间,以秒为单位。
            GLshort deltaRed, //颜色差值的红色通道值,从0到255。
            GLshort deltaGreen, //颜色差值的绿色通道值,从0到255。
            GLshort deltaBlue) //颜色差值的蓝色通道值,从0到255。

实例:

    auto action1 = TintTo::create(, , , );
auto action2 = TintBy::create(, -, -, -);

Sequence,Spawn类的API

static Sequence * create (const Vector< FiniteTimeAction * > &arrayOfActions)  //动作数组。

实例:

auto sequence = Sequence::create( action2, action2Back,action2BackReverse,action2BackReverseReverse, nullptr);

static Spawn * create (const Vector< FiniteTimeAction * > &arrayOfActions)  //一个同步动作数组。

实例:

    auto action = Spawn::create(JumpBy::create(, Vec2(,), , ), RotateBy::create( ,  ), nullptr);

DelayTime,Repeat, RepeatForever,ReverseTime,ActionFloat类的API

重复动作(Repeat)可以按一定次数重复一个动作。

static Repeat * create (FiniteTimeAction *action, //需要重复的目标动作。
            unsigned int times) //重复次数。

RepeatForever永远地重复一个动作。

static RepeatForever* create(ActionInterval * action) //内部动作,这个动作会永远重复。

实例:

    auto act1 = RotateTo::create(, );
auto act2 = RotateTo::create(, );
auto seq = Sequence::create(act1, act2, nullptr);
auto rep1 = RepeatForever::create(seq);
auto rep2 = Repeat::create( seq->clone(), );

DelayTime是延迟动作,可以让Sequence中的动作执行延迟一段时间。

static DelayTime * create (float d) //持续时间,以秒为单位

实例:

auto delay = 1.0f / ;
auto action = DelayTime::create(delay)

static ReverseTime * create (FiniteTimeAction *action) //内部动作

ActionFloat可以将任何值在一定时间间隔内从指定的起始值改变为指定的最终值

static ActionFloat* create(float duration, //持续时间,以秒为单位。
             float from, //起始值
             float to, //最终值
             ActionFloatCallback callback //报告结果的回调函数

实例:

auto actionFloat = ActionFloat::create(.f, , , [this](float value) {
_tamara->setScale(value);});

ProgressFromTo, ProgressTo类的API

ProgressTo设定的时间内从0到指定的百分比

static ProgressTo * create (float duration, //指定ProgressTo动作的持续时间。这是一个以秒为单位的值。
              float percent) //指定目标百分比。

在指定的时间内从一个百分比到另一个百分比的进度。

static ProgressFromTo * create (float duration, //指定ProgressFromTo动作的持续时间。这是一个以秒为单位的值。
                float fromPercentage, //指定开始百分比。
                float toPercentage) //指定结束百分比。

实例:

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

    auto to1 = Sequence::createWithTwoActions(ProgressTo::create(, ), ProgressTo::create(, ));
auto to2 = Sequence::createWithTwoActions(ProgressTo::create(, ), ProgressTo::create(, )); auto left = ProgressTimer::create(Sprite::create(s_pathSister1));
left->setType( ProgressTimer::Type::RADIAL );
addChild(left);
left->setPosition(, s.height/);
left->runAction( RepeatForever::create(to1));

延伸知识:ProgressTimer类

ProgressTimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。继承自 Node

static ProgressTimer * create (Sprite *sp)   //需要使用的 Sprite 对象的指针

cocos代码研究(8)持续动作子类学习笔记的更多相关文章

  1. cocos代码研究(5)Action学习笔记

    理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...

  2. cocos代码研究(1)Node学习笔记

    理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...

  3. cocos代码研究(2)Label学习笔记

    理论部分 Label类继承自Node类,中文翻译文字与字体,通常在应用开发中为模块作为提示和描述的作用,主要有3中不同的创建方式. 1.通过ttf字体包创建,通过指定本地已有的ttf格式的字体文件,创 ...

  4. cocos代码研究(1)sprite学习笔记

    各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...

  5. cocos代码研究(2)Layer学习笔记

    auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...

  6. cocos代码研究(7)即时动作子类学习笔记

    理论部分 即时动作是会立即被执行的动作.他们没有持续时间动作(ActionInterval)的持续时间属性.继承自 FiniteTimeAction.被 CallFunc, FlipX, FlipY, ...

  7. cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记

    理论部分 有限时间动作类继承自Action类,被 ActionInstant(即时动作) , 以及 ActionInterval(持续动作) 继承. 即时动作是会立即被执行的动作,被 CallFunc ...

  8. cocos代码研究(10)ActionEase子类学习笔记

    理论部分 缓动动作的基类,继承自 ActionInterval类.ActionEase本身是一个抽象的概念父类,开发者最好不要在代码中直接创建它的对象,因为它没有具体的执行效果,这一类的子类速度变化大 ...

  9. cocos代码研究(14)Widget子类Button学习笔记

    理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建 ...

随机推荐

  1. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第四节:3D公告板

    <使用Cocos2d-x 开发3D游戏>系列在线课程 第四节:3D公告板 视频地址:http://edu.csdn.net/course/attend/1330/20804 交流论坛:mo ...

  2. break、continue、return之间的区别与联系

    今天在部署程序的时候,监控日志发现这个问题了.return的问题就这么总结哈. 在软件开发过程中,逻辑清晰是非常之重要的. 代码的规范也是非常重要的.往往细节决定成败.在编写代码的时候,一定要理解语言 ...

  3. 罗云彬win32汇编教程笔记 子函数的声明, 定义与调用

    在主程序中用call指令来调用子程序. Win32汇编中的子程序也采用堆栈来传递参数,这样就可以用invoke伪指令来进行调用和语法检查工作. 一. 子程序的定义 子程序的定义方式如下所示. 子程序名 ...

  4. 【PHP】通过header发送自定义数据

    发送header: 我们定义了三个参数,token.language.region,放入header发送过去 <?php $url = 'http://www.example.com'; $he ...

  5. 通过身份证分析出生年月日、性别、年龄的SQL语句

    ),) ) ),)<>'X' ) ) )<>'X' ),)),)),)) ),)),)),)) ) as int)) where [出生日期]<>'' #字符串格式 ...

  6. 用ajax实现用户名的检测(JavaScript方法)

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. sencha touch 扩展篇之使用sass自定义主题样式 (下)通过css修改官方组件样式以及自定义图标

    上一讲我们讲解了如何使用官方的api来修改主题样式,这讲我们继续讲解sass的样式修改, 编译官方自带的主题包  在生成的项目以及官方sdk的目录下,自带了一些主题sass包,我们也可以通过修改sas ...

  8. WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  9. mysql报错sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER

    mysql报错sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER 处理,在控制台 ...

  10. 问答项目---用户注册的那些事儿(PHP验证)

    JS 验证之后,还需要通过PHP验证: 提交过来的名称不一样,可以用字段映射: 在自动验证的时候,如果这个字段被映射,那么自动验证的时候,自动验证的就是 映射过后的字段: 控制器示例: //注册表单处 ...