zoukankan      html  css  js  c++  java
  • 动作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.%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);

  • 相关阅读:
    转载CSDN(educast):c# 对两个Datatable的结构相同进行合并
    .net升级到4.0之后,出现'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its depen
    转载来自博客园(poleices):C#和JavaScript交互(asp.net前台和后台互调)总结
    Bat文件 执行MSSQL 脚本
    多功能jQuery对话框插件 jBox 2.3 正式版
    十一种Web网站程序性能测试工具介绍
    大型电子商务网站架构
    Nginx负载均衡
    文语通5.0破解版下载 有详细图解安装说明
    分享8个超棒的免费高质量图标搜索引擎
  • 原文地址:https://www.cnblogs.com/lion-witcher/p/6004787.html
Copyright © 2011-2022 走看看