Поделиться через


InteractionTracker.NaturalRestingPosition Свойство

Определение

Естественное положение отдыха для InteractionTracker.

Свойство NaturalRestingPosition — это вычисляемая позиция, в которой Будет остановлена функция InteractionTracker , не учитывая границы или модификаторы инерции. Это свойство часто полезно для таких действий, как виртуализация при прокрутке, где важно знать расположение, где будет остановлен InteractionTracker . Существует два main вариантов использования свойства NaturalRestingPosition: получение его текущего значения в аргументах события InertiaStateEntered или ссылка на это свойство в ExpressionAnimation при создании таких вещей, как модификаторы инерции.

public:
 property float3 NaturalRestingPosition { float3 get(); };
float3 NaturalRestingPosition();
public Vector3 NaturalRestingPosition { get; }
var vector3 = interactionTracker.naturalRestingPosition;
Public ReadOnly Property NaturalRestingPosition As Vector3

Значение свойства

Vector3 Vector3

float3

Естественное положение отдыха для InteractionTracker.

Примеры

// Listen for the InertiaStateEntered event, so can grab NaturalRestingPosition value.
public void InertiaStateEntered(InteractionTracker sender, InteractionTrackerInertiaStateEnteredArgs args)
{
  // Grab the NaturalRestingPosition out of the args when the event is fired. Now have access to calculated Natural Rest spot
  Vector3 naturalRest = args.NaturalRestingPosition;
}

// Reference the NaturalRestingPosition property in an expression for things like 	SnapPoints
void CreateBasicSnapPoint(float highBound, float lowBound)
{
  var snappoint = InteractionTrackerInertiaRestingValue.Create(_compositor);

  // Reference the NaturalRestingPosition of InteractionTracker in an ExpressionAnimation for conditional portion of an InertiaModifier.
  snappoint.Condition = _compositor.CreateExpressionAnimation("this.target.NaturalRestingPosition.Y >= 	lowBound && this.target.NaturalRestingPosition.Y < highBound ");

  snappoint.Condition.SetScalarParameter("lowBound", lowBound);
  snappoint.Condition.SetScalarParameter("highBound", highBound);

  // Snap to the highbound if condition met
  snappoint.RestingValue = _compositor.CreateExpressionAnimation("highBound");
  snappoint.RestingValue.SetScalarParameter("highBound", highBound);

  yInertiaModifier.Add(snappoint);

  _tracker.ConfigurePositionYInertiaModifiers(yInertiaModifier);
}

Комментарии

Два варианта использования, описанные в приведенном выше фрагменте кода, являются основными вариантами использования свойства NaturalRestingPosition. Хотя может возникнуть соблазн ссылаться на это свойство в InteractionTracker , как и на любое другое отношение object.property, вы не всегда получите самое актуальное значение. В этой ситуации рекомендуется прослушивать событие InertiaStateEntered и получать последнее значение из аргументов.

Применяется к