我已经用tweenlite补间了一个对象(它的x属性),我想在给定的时刻测量补间期间的瞬时速度。
我知道我可以做一个数组,不断记录onUpdate上最近的x值,然后取差值。但是有没有更有效的方法来做到这一点呢?
发布于 2013-06-11 22:40:06
我不明白为什么你需要速度,但是,这是一个简单的数学问题。您已经知道对象将行进的距离以及到达目的地所需的时间。所以,
speedTimeUnit = distanceTraveled/timeNeededToArrive;
或者如果你需要知道帧的速度
speedFramesUnit = distanceTraveled/(timeNeededToArrive*frameRate);
当然,这是在时间以秒为单位的情况下...
发布于 2013-06-11 22:41:03
不,没有其他方法来衡量它。
无论如何,你需要知道两点之间的距离和移动的时间,如果你在时间线上有动画,唯一的方法就是知道这些参数来测量它。如果补间是线性的,您可以存储初始位置和时间戳,并且在任何时刻瞬时速度将为:
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。
https://stackoverflow.com/questions/17046393
复制相似问题