跳过主要内容

速度追踪器

描述

允许你对特定属性的速度进行自动跟踪,这样你可以随时通过 VelocityTracker 的getVelocity()方法访问它们,例如:myTracker.getVelocity("y").

比如说,有一个对象用户通过拖动与它交互,或者它正在被补间动画处理,然后在某个时刻你想根据该速度创建一个补间动画。xy属性(以及时间戳),以便当需要将其提供给其他你需要运行的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。

无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗