• COCOS学习笔记--持续动作ActionInterval


    上一篇博客介绍了即时动作ActionInstant。与即时动作相对的是持续动作ActionInterval

    顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性。因此持续动作的静态生成函数。往往附带一个时间值。

     

    持续动作ActionInterval类的子类例如以下:

     

     

    一.简单的持续动作

    能够看到,非常多持续动作类名都有后缀To或By

    这两种后缀有什么差别呢?To表示动作终于达到的目标值,By表示动作的增量值。如:

    auto  _moveTo = MoveTo::create(3.0,Vec2(900,600));//表示花3.0秒,按向量(900,600)移动一段距
    auto  _moveBy = MoveBy::create(3.0,Vec2(900,600))//表示花3.0秒,移动到坐标(900,600)


    另外。除移动外。简单的持续动作还包含缩放、旋转、跳跃等等,举一些经常使用的样例:

    //缩放动作
    auto  _scaleTo = ScaleTo::create(3.0,2));
     
    //旋转动作
    auto _rotateTo = RotateTo::create(3.0,60);
     
    //跳跃动作
    //參数:1.运行时间 2.终点坐标 3.跳跃高度 4.跳跃次数
    auto _jumpTo = JumpTo::create(3.0,Vec2(),200,4);
     
    //bezier曲线移动动作
    //首先创建一个bezier曲线配置
    ccBezierConfig  ccb;
    ccb.controlPoint_1 = Vec2(540,400);//第一个控制点
    ccb.controlPoint_2 = Vec2(640,200);//第二个控制点
    ccb.endPosition = Vec2(800, 100);//终点
    //然后创建bezier动作
    auto _bezierTo = BezierTo::create(3.0,ccb);
    //运行动作
    sprite->runAction(_bezierTo);
     
    //淡入淡出动作
    //參数:1.时间 2.透明度
    //精灵创建默认透明度255
    auto _fadeTo = FadeTo::create(3.0,0);
     
    //延时动作
    //一般用于动作间隔
    auto _delayTime = DelayTime::create(3.0);
     
    //色彩渐变动作
    //參数:1.时间 2.RGB
    auto _tintTo = TintTo::create(3.0,255,0,0);
     
    //闪耀动作
    //參数:1.时间 2.闪耀次数
    auto _blink = Blink::create(3.0,10);


    二.复合动作

    除了以上简单的持续动作,我们在Cocos开发中还经常会用到复合动作,当同一个node有多个动作须要组合运行时经常会使用复合动作。复合动作有4种:

    1.Sequence 按序列运行多个动作

    2.Spawn 同一时候运行多个动作

    3.Repeat反复运行几次

    4.RepeatForever永远运行

    注意。这4种复合动作里面的动作即能够包括简单的持续动作。也能够包括即时动作。还能够互相包括复合动作

    下面是这四个复合动作的使用实例:

    //先创建几个简单动作
    //能够是即时动作。也能够是持续动作
    auto _blink = Blink::create(3.0,10);
    auto _place = Place::create(Vec2(100,100));
    auto  _scaleTo = ScaleTo::create(3.0,2));
    
    //顺序运行一系列动作
    //最后參数要为null,告诉方法已经没有动作了
    auto _sequence = Sequence::create(_blink, _place,_bezierTo,NULL);
    
    //同一时候运行一系列动作
    auto _spawn = Spawn::create(_blink, _place, _bezierTo, NULL);
     
    //反复运行某一动作几次
    //參数:1.动作 2.次数
    auto _repeat = Repeat::create(_blink,10);
    
    //永远反复运行某一动作
    auto _repeatForever = RepeatForever::create(_blink);

    这些动作SequenceSpawnRepeatRepeatForever等复合动作通过node调用runAction()方法就可以运行。

     



    以上。


     

  • 相关阅读:
    3
    正确的消费理念和方式
    2
    1
    善待精力,保持体力,保持热情
    为什么不从今天开始呢?
    c++中的新成员
    函数重载分析下
    函数重载分析上
    函数参数的扩展
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7016767.html
Copyright © 2020-2023  润新知