InteractionTracker.TryUpdatePositionWithAdditionalVelocity(Vector3) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试通过添加速度来更新 InteractionTracker 的位置。
TryUpdatePositionWithAdditionalVelocity 方法将表示其他速度的输入 Vector3 添加到 InteractionTracker 的当前速度。 因此,由于 InteractionTracker 的速度现在已更改, 因此 InteractionTracker 的目标静态位置现在会更改。 TryUpdatePositionWithAdditionalVelocity 可以从空闲、惯性或 CustomAnimation 状态调用 , 这样做将添加或更新 InteractionTracker 的速度并进入惯性状态。
public:
virtual int TryUpdatePositionWithAdditionalVelocity(float3 velocityInPixelsPerSecond) = TryUpdatePositionWithAdditionalVelocity;
int TryUpdatePositionWithAdditionalVelocity(float3 const& velocityInPixelsPerSecond);
public int TryUpdatePositionWithAdditionalVelocity(Vector3 velocityInPixelsPerSecond);
function tryUpdatePositionWithAdditionalVelocity(velocityInPixelsPerSecond)
Public Function TryUpdatePositionWithAdditionalVelocity (velocityInPixelsPerSecond As Vector3) As Integer
参数
返回
Int32
int
返回请求 ID。 在状态转换时,导致状态更改的请求将包含在参数中。 这些 ID 将从 1 开始,并在应用程序的生存期内随着每次尝试调用而增加。
示例
// Listen for the InertiaStateEntered event
public void InertiaStateEntered(InteractionTracker sender, InteractionTrackerInertiaStateEnteredArgs args)
{
// Adding velocity to InteractionTracker if condition met
if (_extraVelocityNeeded)
{
// Only adding velocity in the Y direction
_tracker.TryUpdatePositionWithAdditionalVelocity(new Vector3(0.0f, 50.0f, 0.0f));
}
}
注解
如果 InteractionTracker 处于交互状态 (用户正在主动操作) ,并且调用 TryUpdatePositionWithAdditionalVelocity,则系统将忽略此请求 - 当发生这种情况时会触发一个可以侦听的事件。 如果从其他状态之一发送,请侦听为 InertiaStateEntered 触发的事件,并检查用于标识触发回调的请求的 RequestId 属性。 下表总结了在特定状态下调用此方法时的预期行为:
当前状态 | 业务成效 |
---|---|
闲置 | 惯性和惯性修饰符的状态变化使用请求的速度作为初始速度进行评估 |
正在交互 | 忽略请求 |
惯性 | 惯性重启 (状态重新进入惯性) ,并且将请求的速度添加到当前速度时评估惯性修饰符 |
CustomAnimation | 使用请求的速度作为初始速度计算惯性修饰符的当前动画停止和状态更改为惯性 |