0

我用 tweenlite 补间了一个对象(它的 x 属性),我想在给定时刻测量补间期间的瞬时速度。

我知道我可以创建一个数组,在 onUpdate 处不断记录最近的 x 值,然后取其差。但是有没有更有效的方法来做到这一点?

4

2 回答 2

0

不明白为什么需要速度,但是,这是简单的数学运算。您已经知道物体将行进的距离以及到达目的地所需的时间。所以,

speedTimeUnit = distanceTraveled/timeNeededToArrive;

或者如果您需要了解帧速度

speedFramesUnit = distanceTraveled/(timeNeededToArrive*frameRate);

当然,这是在时间以秒为单位的情况下......

于 2013-06-11T14:40:05.723 回答
0

不,没有其他方法可以测量它。

无论如何,您需要知道两点之间的距离和移动时间,如果您在时间轴中有动画,那么唯一的方法就是知道这些参数来测量它。如果您的补间是线性的,您可以存储初始位置和时间戳,并且在任何时候瞬时速度将是:

    var origPos:Point = new Point(obj.x, obj.y);
    var origTimestamp:Number = getTimer();
    var currentPos:Point = new Point();

    currentPos.x = obj.x;
    currentPos.y = obj.y;
    var speed:Number = currentPos.subtract(origPos).length/(getTimer() - origTimestamp);

如果您不确定补间是否更精简origPos,请origTimestamp在每次测量后更换。

于 2013-06-11T14:41:03.193 回答