IUIAnimationPriorityComparison::HasPriority 메서드(uianimation.h)

새 스토리보드가 예약된 스토리보드보다 우선 순위가 있는지 여부를 결정합니다.

구문

HRESULT HasPriority(
  [in] IUIAnimationStoryboard       *scheduledStoryboard,
  [in] IUIAnimationStoryboard       *newStoryboard,
  [in] UI_ANIMATION_PRIORITY_EFFECT priorityEffect
);

매개 변수

[in] scheduledStoryboard

현재 예약된 스토리보드입니다.

[in] newStoryboard

scheduledStoryboard에 지정된 예약된 스토리보드를 중단하는 새 스토리보드입니다.

[in] priorityEffect

scheduledStoryboard의 우선 순위가 높은 경우 newStoryboard에 미치는 잠재적 영향입니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
newStoryboard 에 우선 순위가 있습니다.
S_FALSE
scheduledStoryboard 에 우선 순위가 있습니다.

설명

단일 애니메이션 변수는 여러 스토리보드에 포함할 수 있지만 여러 스토리보드는 동시에 동일한 변수에 애니메이션 효과를 줄 수 없습니다.

새 스토리보드가 다른 스토리보드에서 현재 애니메이션으로 예약된 하나 이상의 변수에 애니메이션 효과를 주려고 하면 일정 충돌이 발생합니다.

우선 순위가 있는 스토리보드를 결정하기 위해 애니메이션 관리자는 애플리케이션에서 제공하는 하나 이상의 우선 순위 비교 처리기에서 HasPriority 를 호출할 수 있습니다.

우선 순위 비교 개체 등록은 선택 사항입니다. 기본적으로 실패를 방지하기 위해 모든 스토리보드를 트리밍, 종료 또는 압축할 수 있지만 취소할 수 없으며 기본적으로 지연을 방지하기 위해 스토리보드가 취소되거나 트리밍되지 않습니다.

기본적으로 콜백 메서드에서 다른 애니메이션 메서드를 호출하면 호출이 실패하고 UI_E_ILLEGAL_REENTRANCY 반환됩니다. 그러나 이 기본값에는 예외가 있습니다. HasPriority에서 다음 메서드를 성공적으로 호출할 수 있습니다.

경합 관리

예약 충돌을 resolve 애니메이션 관리자에는 다음과 같은 옵션이 있습니다.

  • 재생을 시작하지 않은 경우 예약된 스토리보드를 취소하고 IUIAnimationManager::SetCancelPriorityComparison 에 등록된 우선 순위 비교 개체가 S_OK 반환합니다. 취소된 스토리보드는 일정에서 완전히 제거됩니다.
  • IUIAnimationManager::SetTrimPriorityComparison에 등록된 우선 순위 비교 개체가 S_OK 반환하는 경우 예약된 스토리보드를 잘라냅니다. 새 스토리보드가 예약된 스토리보드를 자르면 새 스토리보드가 해당 변수에 애니메이션 효과를 줄 때 예약된 스토리보드가 변수에 더 이상 영향을 주지 않습니다.
  • 예약된 스토리보드에 반복 횟수가 UI_ANIMATION_REPEAT_INDEFINITELY 루프가 포함되어 있고 IUIAnimationManager::SetConcludePriorityComparison에 등록된 우선 순위 비교 개체가 S_OK 반환되는 경우 예약된 스토리보드를 마무리합니다. 스토리보드가 종료되면 루프의 현재 반복이 완료되고 스토리보드의 미리 알림이 재생됩니다.
  • IUIAnimationManager::SetCompressPriorityComparison에 등록된 우선 순위 비교 개체가 압축의 영향을 받을 수 있는 예약된 모든 스토리보드에 대해 S_OK 반환하는 경우 예약된 스토리보드 및 동일한 변수에 애니메이션 효과를 주는 다른 스토리보드를 압축합니다. 스토리보드가 압축되면 영향을 받는 스토리보드에 대한 시간이 일시적으로 가속화되므로 더 빠르게 재생됩니다.

우선 순위 비교 개체에서 위의 옵션을 허용하지 않으면 스토리보드 예약 시도가 실패하고 Windows 애니메이션이 호출 애플리케이션에 UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY 반환합니다.

새 스토리보드가 성공적으로 예약되려면 허용 가능한 가장 긴 지연이 경과하기 전에 시작해야 합니다. IUIAnimationStoryboard::SetLongestAcceptableDelay 또는 IUIAnimationManager::SetDefaultLongestAcceptableDelay에 의해 결정됩니다(둘 다 호출되지 않으면 기본값은 0.0초임). 허용되는 가장 긴 지연이 UI_ANIMATION_SECONDS_EVENTUALLY 경우 유한한 지연으로 충분합니다.

priorityEffect 매개 변수는 HasPriority가 S_FALSE 반환할 경우 새 스토리보드에 미칠 수 있는 영향을 설명합니다. priorityEffectUI_ANIMATION_PRIORITY_EFFECT_FAILURE 경우 S_FALSE 반환하면 새 스토리보드를 예약하지 않을 수 있습니다(애니메이션 관리자가 다른 우선 순위 비교 개체에 의해 다른 방식으로 충돌을 resolve 수 있습니다). priorityEffectUI_ANIMATION_PRIORITY_EFFECT_DELAY 경우 S_FALSE 반환하는 유일한 단점은 스토리보드가 S_OK 반환했을 때보다 나중에 시작될 수 있다는 것입니다.

UI_ANIMATION_PRIORITY_EFFECT_DELAYHasPriority에 전달되면 애니메이션 관리자는 이미 새 스토리보드를 예약하여 허용 가능한 가장 긴 지연이 경과하기 전에 시작되도록 예약할 수 있다고 결정했지만, 실제로는 스토리보드가 더 일찍 시작되어야 하는지 묻는 것입니다. 일부 시나리오에서는 S_OK 반환하여 애니메이션의 대기 시간을 줄이는 것이 가장 좋습니다. 다른 경우에는 가능한 한 예약된 애니메이션을 완료하도록 하는 것이 좋습니다. 이 경우 S_FALSE 반환되어야 합니다. UI_ANIMATION_PRIORITY_EFFECT_DELAY 애니메이션 관리자가 스토리보드 취소 또는 트리밍을 고려할 때만 HasPriority 에 전달됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista용 Windows 7, Windows Vista 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 지원되는 버전 없음
대상 플랫폼 Windows
헤더 uianimation.h
DLL UIAnimation.dll

추가 정보

IUIAnimationManager::SetCancelPriorityComparison

IUIAnimationManager::SetCompressPriorityComparison

IUIAnimationManager::SetConcludePriorityComparison

IUIAnimationManager::SetTrimPriorityComparison

IUIAnimationPriorityComparison

UI_ANIMATION_PRIORITY_EFFECT