共用方式為


IUIAnimationPriorityComparison2::HasPriority 方法 (uianimation.h)

決定排程分鏡腳本與新分鏡腳本之間的相對優先順序。

語法

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

參數

[in] scheduledStoryboard

目前排程的分鏡腳本。

[in] newStoryboard

中斷 scheduledStoryboard 所指定之排程分鏡腳本的新分鏡腳本。

[in] priorityEffect

如果 scheduledStoryboard 的優先順序較高,則對 newStoryboard 的潛在影響。

傳回值

如果成功,則傳回下列專案;否則為 HRESULT 錯誤碼。 如需錯誤碼的清單,請參閱 Windows 動畫錯誤 碼。

傳回碼 描述
S_OK
newStoryboard 具有優先順序。
S_FALSE
scheduledStoryboard 具有優先順序。

備註

單一動畫變數可以包含在多個分鏡腳本中,但多個分鏡腳本無法同時產生相同變數的動畫效果。

如果新的分鏡腳本嘗試以動畫顯示目前由不同分鏡腳本排程動畫的一或多個變數,就會發生排程衝突。

若要判斷哪個分鏡腳本具有優先順序,動畫管理員可以在應用程式提供的一或多個優先順序比較處理程式上呼叫 HasPriority 方法。

註冊優先順序比較對像是選擇性的。 根據預設,所有分鏡腳本都可以修剪、結束或壓縮以防止失敗,但無法取消,而且預設不會取消或修剪腳本,以避免延遲。

根據預設,對任何其他動畫方法的回呼方法進行呼叫會導致呼叫失敗並傳回 UI_E_ILLEGAL_REENTRANCY。 不過,此預設值有例外狀況。 您可以從 HasPriority 成功呼叫下列方法:

爭用管理

若要解決排程衝突,動畫管理員有下列選項:

如果優先順序比較對象不允許上述任何選項,則嘗試排程分鏡腳本會失敗,Windows 動畫 會將UI_ANIMATION_SCHEDULING_INSUFFICIENT_PRIORITY 傳回給呼叫的應用程式。

請注意,若要成功排程新的分鏡腳本,必須在經過最長可接受的延遲之前開始。 這是由 IUIAnimationStoryboard::SetLongestAcceptableDelayIUIAnimationManager2::SetDefaultLongestAcceptableDelay (如果兩者都未呼叫,則預設值為 0.0 秒) 。 如果最長可接受的延遲 UI_ANIMATION_SECONDS_EVENTUALLY,則任何有限延遲都已足夠。

如果 HasPriority 傳回S_FALSE,priorityEffect 參數會描述新分鏡腳本的可能效果。 如果 priorityEffectUI_ANIMATION_PRIORITY_EFFECT_FAILURE,則傳回 S_FALSE 可能會導致排程新的分鏡腳本失敗。 (也可以讓動畫管理員以另一個優先順序比較物件以不同的方式解決衝突。) 如果 priorityEffectUI_ANIMATION_PRIORITY_EFFECT_DELAY,則傳回 S_FALSE 的唯一缺點是腳本可能比 HasPriority 傳回 S_OK還要晚。

UI_ANIMATION_PRIORITY_EFFECT_DELAY 傳遞至 HasPriority 時,動畫管理員已判斷可以排程新的分鏡腳本在經過最長可接受的延遲之前開始,但實際上會要求應用程式是否應該稍早開始。 在某些情況下,最好藉由傳回 S_OK來減少動畫的延遲。 在其他人中,最好盡可能讓排程的動畫完成,在此情況下 ,HasPriority 應該傳回 S_FALSE。 只有在動畫管理員考慮取消或修剪分鏡腳本時,UI_ANIMATION_PRIORITY_EFFECT_DELAY才會傳遞至 HasPriority

規格需求

需求
最低支援的用戶端 Windows 8、適用於 Windows 7 的 Windows 7 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 都不支援
目標平台 Windows
標頭 uianimation.h
Dll UIAnimation.dll

另請參閱

IUIAnimationManager2::SetCancelPriorityComparison

IUIAnimationManager2::SetCompressPriorityComparison

IUIAnimationManager2::SetConcludePriorityComparison

IUIAnimationManager2::SetTrimPriorityComparison

IUIAnimationPriorityComparison2

UI_ANIMATION_PRIORITY_EFFECT