速度追踪器
描述
允许你对特定属性的速度进行自动跟踪,这样你可以随时通过 VelocityTracker 的getVelocity()
方法访问它们,例如:myTracker.getVelocity("y")
.
比如说,有一个对象用户通过拖动与它交互,或者它正在被补间动画处理,然后在某个时刻你想根据该速度创建一个补间动画。x
和y
属性(以及时间戳),以便当需要将其提供给其他你需要运行的velocity
代码时,你拥有计算所需的数据。但让我们面对现实:手动执行此操作可能很麻烦,而这正是 VelocityTracker 存在的原因。
VelocityTracker 位于 InertiaPlugin 的 JavaScript 文件中。你可以直接通过 InertiaPlugin 访问重要的方法,例如:InertiaPlugin.track()
.
使用静态的VelocityTracker.track()
方法来开始跟踪属性。通常你不应该有使用 VelocityTracker 的构造函数,因为每个特定的对象只需要关联一个 VelocityTracker 实例。这个track()
方法将返回一个你可以用来进行getVelocity()
例如:
// first, start tracking "x" and "y":
var tracker = VelocityTracker.track(obj, "x,y")[0];
//then, after at least 100ms and 2 "ticks", we can get the velocity of each property:
var vx = tracker.get("x");var vy = tracker.get("y");
可以跟踪哪些类型的属性?
几乎任何对象的数字类型属性都可以被跟踪,包括基于函数的属性。比如:obj.x
或者obj.rotation
或者甚至obj.myCustomProp()
操作的实例。实际上,对于以单词“get”或“set”开头的 getter 和 setter 方法(例如getCustomProp()
和setCustomProp()
),它会自动找到匹配的对应方法并适当地使用 getter,因此你可以跟踪 getter 或 setter,它都能正常工作。但是你不可以跟踪像directionalRotation
, autoAlpha
,或者physics2D
这样的自定义插件相关值不能被跟踪,因为它们并不是对象的真实属性。你应该跟踪那些插件所影响的真实属性,比如:rotation
, alpha
, x
,或者y
.
这样的自定义插件相关值。
为了准确报告速度,在你检查速度之前,核心补间引擎至少需要经过 100ms 和 2 个 tick。