博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动作Action
阅读量:7094 次
发布时间:2019-06-28

本文共 6771 字,大约阅读时间需要 22 分钟。

/**     * 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)));

 

顺序执行

Action * action = Sequence::create(moveby, jumpby, rotateby, NULL);

同时执行

Action * action = Spawn::create(moveby, jumpby, rotateby, NULL);

转载于:https://www.cnblogs.com/lion-witcher/p/6004787.html

你可能感兴趣的文章
kindeditor使用入门-张国红
查看>>
request.getParameter和request.getAttribute之间的区别
查看>>
Centos7安装Docker
查看>>
mongoDB分片技术
查看>>
AWK介绍和基本用法
查看>>
基于mysql的可视化日志管理——loganalyzer
查看>>
数据库介绍及分类
查看>>
linux用户、组操作笔记
查看>>
金三银四跳槽季,上周刚面试回来后的面试总结
查看>>
【AWS系列】镭速RaySync VS FTP (9)- AWS新加坡到阿里云深圳
查看>>
Ansible自动化运维之Playbook详解及体验(一)
查看>>
100 个网络基础知识普及(下)
查看>>
ubunt 基于deb 配置本地apt 源 分成仅本机使用,局域网使用2种
查看>>
pdf文件怎么修改内容知识介绍
查看>>
#聊聊心得#快速实现远程运维
查看>>
架构设计杂谈-架构设计
查看>>
Linux的学习之路-2019 安装 VMware Workstation Pro
查看>>
Rhel6.0部署Oracle10g报错相关问题记录
查看>>
Golden Gate软件下载及操作指南
查看>>
Oracle教程之oracle 用户_oracle用户概念_用户表空间_用户资源文件
查看>>