动画Action

    /**
     * DelayTime延迟
     * @param d Duration 延迟时间
     */
    auto delayTime = DelayTime::create(3);
    sprite->runAction(delayTime);

    /**
     MoveTo 移动
     @param duration 时长
     @param position 移动到的位置
     */
    auto *moveto = MoveTo::create(1.2f, Vec2(200, 300));
    sprite->runAction(moveto);
    /**
     MoveBy 移动的距离
     @param duration 时长
     @param position 移动的距离, 从起始位置移动(100, 200)的位移
     */
    auto *moveBy = MoveBy::create(1.2f, Vec2(100, 200));
    sprite->runAction(moveBy);

    /**
     * ScaleTo x, y, z轴按比例缩放  对应于ScaleBy
     * @param duration 动作时长
     * @param x比例
     * @param y比例
     * @param z比例
     */
    auto *scaleTo = ScaleTo::create(1.2f, 2.0, 0.5, 2.0);
    sprite->runAction(scaleTo);

    /**
     RotateTo旋转, 如果是3D, 需要参数Vec3, 表示x, y, z方向旋转角度 对应于RotateBy
     @param duration 时长
     @param dstAngleX x旋转角度
     @param dstAngleY y旋转角度
     */
    auto *rotateTo = RotateTo::create(3.0, 90, 0);
    sprite->runAction(rotateTo);

    /**
     SkewTo 倾斜一定角度 对应于SkewBy
     @param t 时长
     @param sx x角度
     @param sy y角度
     */
    auto skewTo = SkewTo::create(3.0, 0, -30);
    sprite->runAction(skewTo);

    /**
     * JumpTo创建跳跃动作   对应于JumpBy
     * @param duration 时长.
     * @param position 目标位置.
     * @param height 每次跳跃的高度.
     * @param jumps 跳跃次数.
     */
    auto jumpTo = JumpTo::create(3.0, Vec2(300, 100), 100, 3);
    sprite->runAction(jumpTo);

    /**
     * BezierBy创建贝塞尔曲线动作  对应于BezierTo
     * @param t 时长
     * @param c 贝塞尔配置.
     */
    ccBezierConfig bezier;
    bezier.controlPoint_1 = Vec2(-100, 0);
    bezier.controlPoint_2 = Vec2(100, 80);
    bezier.endPosition = Vec2(0, 160);
    auto *bezierBy = BezierBy::create(2, bezier);
    sprite->runAction(bezierBy);

    /**
     * FadeIn渐渐显示至255, (如果精灵本来就是255透明度, 没有效果) 对应于FadeOut渐渐消失  FadeTo(渐变到..)
     * @param duration 时长
     */
    auto fadeIn = FadeIn::create(3.0);
    sprite->runAction(fadeIn);

    /**
     * TintTo填充颜色渐变  对应于TintBy
     * @param duration 时长
     * @param red r值 0 to 255.
     * @param green g值
     * @param blue b值
     */
    auto tintTo = TintTo::create(3.0, 120, 120, 140);
    sprite->runAction(tintTo);

    /**
     * Blink闪烁
     * @param duration 时长
     * @param blinks 闪烁次数.
     */
    auto *blink = Blink::create(1.0f, 4);
    sprite->runAction(blink);

    /**
     OrbitCamera创建一个球面坐标轨迹进行旋转的动作
     @param t           动画时长
     @param radius      起始半径
     @param deltaRadius 半径差
     @param angleZ      起始Z角度
     @param deltaAngleZ 旋转Z角度
     @param angleX      起始X角度
     @param deltaAngleX 旋转X角度
     */
    auto orbit = OrbitCamera::create(3, 10, 0, 0, 180, 0, 180);
    auto reverse = orbit->reverse();
    sprite->runAction(reverse);

    /**CardinalSplineTo创建一个样条曲线轨迹的动作  对应于CardinalSplineBy
     * @param duration 时长
     * @param points 控制点的坐标数组
     * @param tension 拟合度  其值= 0 路径最柔和
     */
    PointArray *array = PointArray::create(20);
    array->addControlPoint(Vec2(0, 0));
    array->addControlPoint(Vec2(210, 0));
    array->addControlPoint(Vec2(210, 240));
    array->addControlPoint(Vec2(0, 160));
    array->addControlPoint(Vec2(0, 0));

    auto cardinalSplineTo = CardinalSplineTo::create(5.0, array, 0);
    sprite->runAction(cardinalSplineTo);

    /** CatmullRomTo创建一个样条插值轨迹 对应于CatmullRomBy
     * @param 时长
     * @param points 控制点的坐标数组
     * @code
     */
    auto catmullRomTo = CatmullRomTo::create(3.0, array);
    sprite->runAction(catmullRomTo);

    /**
     EaseBounceIn 创建有反弹效果的动作(开始时反弹)  对应于EaseBounceOut结束位置反弹, EaseBounceInOut
     @param action 目标动作
     */
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto easeBoundIn = EaseBounceIn::create(moveTo);
    sprite->runAction(easeBoundIn);

    /**
     EaseBackOut 让目标动作赋予回力, 且以目标动作终点位置作为回力点  对应于EaseBackIn, EaseBackInOut
     @param action 目标动作
     */
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto easeBackOut = EaseBackOut::create(moveTo);
    sprite->runAction(easeBackOut);

    /**
     EaseElasticIn 让目标动作赋予弹性, 且以目标动作起点位子赋予弹性  对应于EaseElasticOut, EaseElasticInOut
     @param action 目标动作
     @param period
     */
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto easeElasticIn = EaseElasticIn::create(moveTo, 0.5);
    sprite->runAction(easeElasticIn);

    /**
     EaseExponentialIn 让目标动作缓慢开始  对应于EaseExponentialOut, EaseExponentialInOut
     @param action 目标动作
     */
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto easeExponentialIn = EaseExponentialIn::create(moveTo);
    sprite->runAction(easeExponentialIn);

    /**
     EaseRateAction 给目标动作设置速率
     @param action 目标动作
     @param rate 速率
     **/
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto easeRateAction = EaseRateAction::create(moveTo, 3);
    sprite->runAction(easeRateAction);

    /**
     EaseSineIn 动作由慢到快  对应于EaseSineOut, EaseSineInOut(动作由慢到快再快到慢)
     @param action
     */
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto easeSineIn = EaseSineIn::create(moveTo);
    sprite->runAction(easeSineIn);

    /** Speed 倍速
     * @param action 目标动作
     * @param speed 几倍速
     */
    auto moveTo = MoveTo::create(4.0, Vec2(300, 300));
    auto speed = Speed::create(moveTo, 4);
    sprite->runAction(speed);

    /* Spawn 组合多个动作
     * 参数:多个目标动作
     */
    auto spawn = Spawn::create(action1, action2, NULL);
    sprite->runAction(spawn);

    /** Sequence 多个动作顺序执行
     * 参数:多个动作   如果要执行反方向动作, 所有动作都得支持反方向动作
     */
    auto moveBy = MoveBy::create(4.0, Vec2(300, 300));
    auto scale = ScaleBy::create(2.0, 0.7);
    auto sequence = Sequence::create(moveBy, scale, NULL);
    auto sequenceRever = Sequence::create(sequence, sequence->reverse(), NULL);
    sprite->runAction(sequence);
    sprite->runAction(sequenceRever);

    /* Repeat 重复动作
     * @param action 要重复的动作, 可以是Sequence, Spawn类型的
     * @param times 重复次数
     */
    auto repeat = Repeat::create(sequence, 3);
    sprite->runAction(repeat);

    /* RepeatForever 永久性重复动作
     * @param action 要重复的动作, 可以是Sequence, Spawn类型的
     */
    auto repeatForever = RepeatForever::create(sequence, 3);
    sprite->runAction(repeatForever);


//Follow 创建的时候需要设置要追随的精灵,然后让背景来执行follow  (有待继续研究)

/**

* 创建动作可以设置范围, 也可以不设置

* @param followedNode  追随的精灵

* @param rect  如果没有设置, 表示RECT::ZERO, 表示没有范围

*/

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

log("+++++++++s.width:%f, s.height:%f", s.width, s.height);

sprite->setPosition(Vec2(-200, s.height / 2));

auto move      = MoveBy::create(2, Vec2(s.width * 3, 0));

auto move_back = move->reverse();

auto seq       = Sequence::create(move, move_back, NULL);

auto rep       = RepeatForever::create(seq);

sprite->runAction(rep);

this->runAction(Follow::create(sprite, Rect(0, 0, s.width * 2 - 100, s.height)));

时间: 2024-10-17 11:55:05

动画Action的相关文章

Libgdx1.5.1关于Action改动后的使用方式

API Change: Added concept of target actor, separate from the actor the action is added to. This allows an action to be added to one actor but affect another. This is useful to create a sequence of actions that affect many different actors. Previously

动画基础--基于Core Animation(3)

参考:https://zsisme.gitbooks.io/ios-/content/ 前面的文章动画基础--基于Core Animation(1),动画基础--基于Core Animation(2)提到了图层的基本概念以及可动画参数几何学等知识. 本片文章将继续探讨更加深入的动画知识. 前面已经两篇文章已经就图层的概念和几何学和效果表现,变换等左列介绍. 在前面的两篇文章中大部分采用了视图自带的backing 图层进行讲解,本身这个图层是禁止动画效果的.所以在前面的文章中很少看到明显的 动画,

cocos2dx3.6 实现带光标的输入框

多的不说,我这个学渣,我写的代码比较搓!忍耐下吧! CursorTextField.h #ifndef _CursorTextField_H_ #define _CursorTextField_H_ #include "cocos2d.h" USING_NS_CC; class CursorTextField : public TextFieldTTF, public TextFieldDelegate , public IMEDelegate { private: // 点击开始位置

【STL】哈希表 uthash.h

散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构.线性表查找的时间复杂度为O(n)而平衡二叉树的查找的时间复杂度为O(log(n)).无论是采用线程表或是树进行存储,都面临面随着数据量的增大,查找速度将不同程度变慢的问题.而哈希表正好解决了这个问题. 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数 函

???01-UIKIT基础控件小结

iOS开发概述 cocos体系结构,一共有四层框架,要调用不同的功能,需要使用不同的框架.前期主要学习cocos touch层的UIKit框架 iOS和android的对比 ü   iOS是基于UINX,用C语言开发的,直接与系统底层交互,性能高 ü   andorid是基于Linux,用Java语言开发,基于虚拟机运行,性能差 UI基础控件 1.    UILabel——标签 作用:显示文字 属性: text属性:是label的文字 alignment属性:对齐方式 lines属性:如果为0,

cocos2dx3.6 实现带光标的输入框(二);光标可移动

现在光标终于可移动了,然后其实主要是逻辑问题,也没什么技术含量,所以总是一大堆位置判断!再者自己能力比较水,所以代码比较挫,这里代码只有更新那部分,具体的回车什么的自己去弄就好了,其实跟这个思想差不多吧!个人觉得. 代码: CursorTextField.h #ifndef _CursorTextField_H_ #define _CursorTextField_H_ #include "cocos2d.h" USING_NS_CC; class CursorTextField : p

原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现

2001年,和大学同学一起完成的毕业设计作品.cooling&bobo. 学习数据结构与算法,请访问:数据结构学习网站 http://xu-laoshi.cn/shujujiegou/ ."数据结构与算法"QQ群:30308606.一起探讨数据结构和算法,并可下载本套课件. 当年Flash动画还是新鲜事物,网上可以参考的资料也很少,一步步摸索制作.总的花了一个多月时间才完成.这个项目同时也是当年浙江省自学考试办公室官方网站的教学课件.总体来说是一套在互联网上比较经典的数据结构教

libgdx Action 动作 动画

Libgdx中有个类Actions, 从它开始顺藤摸瓜就能把哪些简单的Action快速掌握 见代码: 1 public class ActionTestScreen implements Screen,InputProcessor{ 2 private Stage stage; 3 private Texture texture; 4 private Image img; 5 6 @Override 7 public void render(float delta) { 8 Gdx.gl.glC

lua简化cocos2dx的Action动画序列

情景 今天写代码时,又要写一个很常见的动画,就是变大变小模拟那个弹性的赶脚,很常用但写起来挺麻烦,突然思绪来了,其实代码可以很简洁,多亏了lua的灵活呀,真方便. 当然我也知道有缓动动画(EaseAction)可以实现反弹效果,但这不是重点 使用 -- 模拟3个cc.ScaleTo,但是不限于3个,个数没有限制 -- 1> 0.08秒 放大1.2倍 -- 2> 0.1秒 放大0.9倍 -- 3> 0.1秒 放大1倍 actionScaleTo(0.08,1.2, 0.1,0.9, 0.1