我用 tweenlite 补间了一个对象(它的 x 属性),我想在给定时刻测量补间期间的瞬时速度。
我知道我可以创建一个数组,在 onUpdate 处不断记录最近的 x 值,然后取其差。但是有没有更有效的方法来做到这一点?
我用 tweenlite 补间了一个对象(它的 x 属性),我想在给定时刻测量补间期间的瞬时速度。
我知道我可以创建一个数组,在 onUpdate 处不断记录最近的 x 值,然后取其差。但是有没有更有效的方法来做到这一点?
不明白为什么需要速度,但是,这是简单的数学运算。您已经知道物体将行进的距离以及到达目的地所需的时间。所以,
speedTimeUnit = distanceTraveled/timeNeededToArrive;
或者如果您需要了解帧速度
speedFramesUnit = distanceTraveled/(timeNeededToArrive*frameRate);
当然,这是在时间以秒为单位的情况下......
不,没有其他方法可以测量它。
无论如何,您需要知道两点之间的距离和移动时间,如果您在时间轴中有动画,那么唯一的方法就是知道这些参数来测量它。如果您的补间是线性的,您可以存储初始位置和时间戳,并且在任何时候瞬时速度将是:
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
在每次测量后更换。