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


InteractionTracker.TryUpdateScaleWithAnimation Метод

Определение

Пытается обновить масштаб с помощью указанной анимации.

Метод TryUpdateScaleWithAnimation обновляет положение шкалы InteractionTracker на основе compositionAnimation , введенного в качестве параметра. Этот метод используется в ситуациях, когда движение InteractionTracker должно определяться определенной анимацией, а не традиционным интерфейсом инерции. TryUpdateScaleWithAnimation можно вызвать из состояния "Бездействие" или "Инерция". Для этого позиция InteractionTracker будет управляться определенной анимацией и перейдет в состояние CustomAnimation.

public:
 virtual int TryUpdateScaleWithAnimation(CompositionAnimation ^ animation, float3 centerPoint) = TryUpdateScaleWithAnimation;
int TryUpdateScaleWithAnimation(CompositionAnimation const& animation, float3 const& centerPoint);
public int TryUpdateScaleWithAnimation(CompositionAnimation animation, Vector3 centerPoint);
function tryUpdateScaleWithAnimation(animation, centerPoint)
Public Function TryUpdateScaleWithAnimation (animation As CompositionAnimation, centerPoint As Vector3) As Integer

Параметры

animation
CompositionAnimation

Анимация, применяемая к шкале.

centerPoint
Vector3 Vector3

float3

Новая центральная точка.

Возвращаемое значение

Int32

int

Возвращает идентификатор запроса. При переходе состояния запрос, вызваввший изменение состояния, будет включен в аргументы. Эти идентификаторы начинаются с 1 и увеличиваются с каждым вызовом try в течение времени существования приложения.

Примеры

void CustomAnimationForIT(float newScale, Vector3 newCenterPoint)
{
  // Create a cubic bezier easing function that will be used in the KeyFrames
  CompositionEasingFunction cubicBezier = _compositor.CreateCubicBezierEasingFunction(new Vector2(.17f, .67f), new Vector2(1f, 1f);

  // Create the Vector3 KFA
  ScalarKeyFrameAnimation kfa = _compositor.CreateScalarKeyFrameAnimation();
  kfa.Duration = TimeSpan.FromSeconds(3);

  // Create the KeyFrames
  kfa.InsertKeyFrame(1.0f, newScale, cubicBezier);

  // Update InteractionTracker position using this animation
  _tracker.TryUpdatePositionWithAnimation(kfa, newCenterPoint);
}

Комментарии

При создании анимации, с помощью которой требуется обновить позицию InteractionTracker , не нужно вызывать Microsoft.UI.Composition.CompositionObject.StartAnimation. Система позаботится об этом в фоновом режиме после того, как анимация будет передана через TryUpdateScaleWithAnimation.

При определении анимации, которая будет анимировать позицию масштабирования InteractionTracker , обязательно используйте ScalarKeyFrameAnimation или ExpressionAnimation , которая разрешается в Scalar.

В таблице ниже приведена сводка ожидаемого поведения при вызове этого метода в определенном состоянии:

Текущее состояниеРезультат
БездействиеЗапрошенная анимация начинается с запрошенного свойства, состояние изменяется на CustomAnimation
ВзаимодействиеЗапрос игнорируется
ИнерцияЗапрошенная анимация начинается с запрошенного свойства, состояние изменяется на CustomAnimation
CustomAnimationТекущая анимация останавливается, а новая запрошенная анимация запускается при запрошенном свойстве, состояние снова вводит CustomAnimation

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