易于运动,编程补间,c ++

时间:2016-12-31 05:00:47

标签: c++ actionscript-3 tween motion

补间是一个视频编辑术语,用于描述动作的简易性。例如,对于电梯,当电梯到达其所需的楼层时,电梯不会全速并且停止。它知道它的底板,底板是什么,以及到达那里需要多长时间。然后它使用该数据来平滑其运动。

我希望能够通过使用补间为我的项目编写这个平滑的动作。

如何执行此操作的方法在http://robertpenner.com/easing/penner_chapter7_tweening.pdf

中列出

特别关注pg207-211

本指南解释了什么是补间,然后在Action Script中显示代码。说实话,我觉得有点愚蠢,因为我试图使用提供的示例,但我似乎无法用其他语言复制它,例如c ++,java,javascript或lua。

我不想使用包或插件来编写补间,我想学习如何实际编写补间函数。因此,如果任何具有更好理解能力或编程技巧的人认为他们理解,那么我非常感谢你的解释。

示例动作脚本函数...

Math.easeInQuad = function (t, b, c, d) {
    return c*(t/=d)*t + b;
};

Math.easeOutQuad = function (t, b, c, d) {
    return -c * (t/=d)*(t-2) + b;
};

Math.easeInOutQuad = function (t, b, c, d) {
    if ((t/=d/2) < 1) 
        return c/2*t*t + b;
    return -c/2 * ((--t)*(t-2) - 1) + b;
};

1 个答案:

答案 0 :(得分:2)

AS3中的适当补间函数接受Number的6个参数,最后两个参数默认为0.它应该按如下方式解释参数:

  • 第一个参数是主要参数,它填充的值从0到补间持续时间;
  • 第二个参数是第一个参数为零时尝试补间的参数值;
  • 第三个参数是预期要分配补间参数的值的间隔大小;
  • 第四个参数是用户提供的任何单位的持续时间,因此是一个数字而不是一个int;
  • 第五个和第六个参数是可选的,不在AS3内置补间库中使用,但如果它在其他地方定制使用,它们可用于修改在函数内部完成的插值。

预期结果是second(second+third)参数之间的值,或t, b, c, d, a, pb之间的b+c规范名称。

您可以使用如下简单算法绘制函数图:

function graph(f:Function,w:Number,h:Number):Shape {
    // returns a shape with black on white graph drawn within a rectangle of given dimensions
    var s:Shape=new Shape();
    s.graphics.lineStyle(0); // black
    s.graphics.moveTo(0,h); // lower left corner
    for (var i:int=0;i<w;i++) {
         s.graphics.lineTo(i,f(i,h,-1*h,w));
    }
    return s;
}

说到C ++,例如easeInQuad应该像这样编程(如果我没有弄乱C ++语法):

double easeInQuad(double t, double b, double c, double d) {
    double td=t/d;
    return b+c*td*td;
}