• ‎Cocos2d-x 学习笔记(13) ActionEase


    ActionEase是ActionInterval的子类,能够变速执行动作。把内部动作进行了包装,通过传进update的time,加上不同的计算公式,算出新的time,作为内部动作的time,实现了内部动作变速。

    用3种宏定义的方式对每个缓冲动作类进行定义:

    EASE_TEMPLATE_IMPL(CLASSNAME, TWEEN_FUNC, REVERSE_CLASSNAME)

    3个参数:类名,update调用的函数,反向执行的类名。

    定义的方法:create、update、clone、reserve(执行参数中反向类的create方法)。

    定义了:指数缓冲、Sine缓冲、跳跃缓冲、回震缓冲……

    EASERATE_TEMPLATE_IMPL(CLASSNAME, TWEEN_FUNC)

    2个参数:类名,update调用的函数

    定义了:EaseIn/Out/InOut。create方法包括参数float rate,赋值给_rate。

    EASEELASTIC_TEMPLATE_IMPL(CLASSNAME, TWEEN_FUNC, REVERSE_CLASSNAME)

    定义了:EaseElasticIn/Out/InOut。create方法包括参数float period,赋值给_period。

    函数TWEEN_FUNC通过缓冲的time计算出新time,作为内部action的update的参数time。

    函数图像的横轴是包装类的time,随时间均匀增加,竖轴是传给内部动作update的time。斜率可以看做是内部动作运行的速率,斜率小于1,比正常速度慢,大于1,比正常速度快。

    1. 指数缓冲 EaseExponential

    EaseExponentialIn先慢后快,对应的tweenfunc方法:

    EaseExponentialOut先快后慢,tweenfunc:

    EaseExponentialInOut缓冲进度以0.5为界,分两种情况,呈现的效果是先慢后快再慢。

        if(time == 0 || time == 1) 
            return time;
        
        if (time < 0.5f)
            return 0.5f * powf(2, 10 * (time * 2 - 1));
    
        return 0.5f * (-powf(2, -10 * (time * 2 - 1)) + 2);

    2. EaseSine

    Out:

    In:

    InOut:

    3. EaseBounce

    4. EaseBack

    5. EaseQuadraticAction 2次函数

    Out:

    In:

     InOut

     6. EaseQuarticAction 4次函数

    In/Out:

    InOut:

    7. EaseQuinticActionIn 5次函数

    In/Out:

     InOut:

    8. EaseCircleAction 圆函数

    In/Out:

    InOut:

    9. EaseCubicAction 3次函数

    In/Out:

    InOut:

    10. Ease

    create需要传入参数rate,作为tweenfunc计算时的次方数。

    对于In:rate>1时,rate越大, 慢速时间越长越慢,加速越晚越快。0<rate<1时,rate越小,加速越早越快,慢速时间越长越慢。

    对于Out:rate>1时,rate越大,加速越早越快,慢速时间越长越慢。0<rate<1时,rate越小,慢速时间越长越慢,加速越晚越快。0

    对于InOut:rate>1时越大,越靠近0.5时间进度时加速,加速越快时间越短。1/2

    11. EaseElastic

    create参数period越接近0,弹性效果越明显。为0消失。

  • 相关阅读:
    Spine学习四
    Spine学习三
    用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计
    用 C 语言开发一门编程语言 — 变量元素设计
    用 C 语言开发一门编程语言 — Q-表达式
    C 编程异常 — double free or corruption (fasttop)
    用 C 语言开发一门编程语言 — S-表达式
    用 C 语言开发一门编程语言 — 异常处理
    用 C 语言开发一门编程语言 — 抽象语法树
    用 C 语言开发一门编程语言 — 语法解析器
  • 原文地址:https://www.cnblogs.com/deepcho/p/cocos2dx-actionease.html
Copyright © 2020-2023  润新知