共用方式為


CAnimationController 類別

實作動畫控制器,提供用來建立和管理動畫的中央介面。

語法

class CAnimationController : public CObject;

成員

公用建構函式

名稱 描述
CAnimationController::CAnimationController 建構動畫控制器。
CAnimationController::~CAnimationController 解構函式。 當動畫控制器對象被終結時呼叫。

公用方法

名稱 描述
CAnimationController::AddAnimationObject 將動畫物件加入至屬於動畫控制器的群組。
CAnimationController::AddKeyframeToGroup 將主要畫面格新增至群組。
CAnimationController::AnimateGroup 準備群組以執行動畫,並選擇性地排程動畫。
CAnimationController::CleanUpGroup 已多載。 由架構呼叫,以在排程動畫時清除群組。
CAnimationController::CreateKeyframe 已多載。 建立隨轉換而改變的主要畫面格,將它加入指定的群組。
CAnimationController::EnableAnimationManagerEvent 設定或釋放當動畫管理員的狀態變更時要呼叫的處理程式。
CAnimationController::EnableAnimationTimerEventHandler 設定或釋放計時事件的處理程式,以及計時更新的處理程式。
CAnimationController::EnablePriorityComparisonHandler 設定或釋放要呼叫的優先順序比較處理程式,以判斷是否可以取消、結束、修剪或壓縮排程分鏡腳本。
CAnimationController::EnableStoryboardEventHandler 設定或釋放文本狀態和更新事件的處理程式。
CAnimationController::FindAnimationGroup 已多載。 依腳本尋找動畫群組。
CAnimationController::FindAnimationObject 尋找包含指定動畫變數的動畫物件。
CAnimationController::GetKeyframeStoryboardStart 傳回識別分鏡腳本開頭的主要畫面格。
CAnimationController::GetUIAnimationManager 提供封裝的 IUIAnimationManager 物件的存取權。
CAnimationController::GetUIAnimationTimer 提供封裝的 IUIAnimationTimer 物件的存取權。
CAnimationController::GetUITransitionFactory 如果轉換連結庫的建立失敗,IUIAnimationTransitionFactory 介面或 NULL 的指標。
CAnimationController::GetUITransitionLibrary 提供封裝的 IUIAnimationTransitionLibrary 物件的存取權。
CAnimationController::IsAnimationInProgress 指出至少有一個群組正在播放動畫。
CAnimationController::IsValid 告知動畫控制器是否有效。
CAnimationController::OnAnimationIntegerValueChanged 當動畫變數的整數值變更時,由架構呼叫。
CAnimationController::OnAnimationManagerStatusChanged 由架構呼叫,以響應動畫管理員的 StatusChanged 事件。
CAnimationController::OnAnimationTimerPostUpdate 動畫更新完成之後,由架構呼叫。
CAnimationController::OnAnimationTimerPreUpdate 在動畫更新開始之前,由架構呼叫。
CAnimationController::OnAnimationTimerRenderingTooSlow 當動畫的轉譯幀速率低於最低所需的幀速率時,由架構呼叫。
CAnimationController::OnAnimationValueChanged 當動畫變數的值已變更時,由架構呼叫。
CAnimationController::OnBeforeAnimationStart 在排程動畫之前,由架構呼叫。
CAnimationController::OnHasPriorityCancel 由架構呼叫來解決排程衝突。
CAnimationController::OnHasPriorityCompress 由架構呼叫來解決排程衝突。
CAnimationController::OnHasPriorityConclude 由架構呼叫來解決排程衝突。
CAnimationController::OnHasPriorityTrim 由架構呼叫來解決排程衝突。
CAnimationController::OnStoryboardStatusChanged 腳本狀態變更時由架構呼叫。
CAnimationController::OnStoryboardUpdated 腳本更新時由架構呼叫。
CAnimationController::RemoveAllAnimationGroups 從動畫控制器移除所有動畫群組。
CAnimationController::RemoveAnimationGroup 從動畫控制器移除具有指定標識碼的動畫群組。
CAnimationController::RemoveAnimationObject 從動畫控制器移除動畫物件。
CAnimationController::RemoveTransitions 從屬於指定群組的動畫物件中移除轉換。
CAnimationController::ScheduleGroup 排程動畫。
CAnimationController::SetRelatedWnd 建立動畫控制器與視窗之間的關聯性。
CAnimationController::UpdateAnimationManager 指示動畫管理員更新所有動畫變數的值。

受保護的方法

名稱 描述
CAnimationController::CleanUpGroup 已多載。 清除群組的協助程式。
CAnimationController::OnAfterSchedule 剛排程指定群組的動畫時,由架構呼叫。

受保護的資料成員

名稱 描述
CAnimationController::gkeyframeStoryboardStart 主要畫面格,表示分鏡腳本的開頭。
CAnimationController::m_bIsValid 指定動畫控制器是否有效。 如果目前的OS不支援 Windows 動畫 API,此成員會設定為 FALSE。
CAnimationController::m_lstAnimationGroups 屬於這個動畫控制器的動畫群組清單。
CAnimationController::m_pAnimationManager 儲存動畫管理員 COM 物件的指標。
CAnimationController::m_pAnimationTimer 儲存動畫定時器 COM 物件的指標。
CAnimationController::m_pRelatedWnd 相關 CWnd 物件的指標,可在動畫管理員的狀態變更或發生更新後事件時自動重新繪製。 可以是 NULL。
CAnimationController::m_pTransitionFactory 儲存 Transition Factory COM 物件的指標。
CAnimationController::m_pTransitionLibrary 儲存轉換連結庫 COM 物件的指標。

備註

CAnimationController 類別是管理動畫的關鍵類別。 您可以在應用程式中建立一或多個動畫控制器實例,並選擇性地使用 CAnimationController::SetRelatedWnd 將動畫控制器的實例連接到 CWnd 物件。 當動畫管理員狀態變更或動畫定時器更新時,需要此連線,才能自動將WM_PAINT訊息傳送至相關視窗。 如果您未啟用此關聯,則必須重新繪製以手動方式顯示動畫的視窗。 基於這個目的,您可以從 CAnimationController 衍生類別,並覆寫 OnAnimationManagerStatusChanged 和/或 OnAnimationTimerPostUpdate,並在必要時使一或多個視窗失效。

繼承階層架構

CObject

CAnimationController

需求

標頭: afxanimationcontroller.h

CAnimationController::~CAnimationController

解構函式。 當動畫控制器對象被終結時呼叫。

virtual ~CAnimationController(void);

CAnimationController::AddAnimationObject

將動畫物件加入至屬於動畫控制器的群組。

CAnimationGroup* AddAnimationObject(CAnimationBaseObject* pObject);

參數

pObject
動畫物件的指標。

傳回值

如果函式成功,則為現有或新動畫群組的指標,其中已新增 pObject;如果 pObject 已經新增至屬於另一個動畫控制器的群組,則為 NULL。

備註

呼叫這個方法,將動畫物件新增至動畫控制器。 對象會根據物件的 GroupID 新增至群組(請參閱 CAnimationBaseObject::SetID)。 如果動畫控制器是第一個以指定的 GroupID 新增的對象,動畫控制器將會建立新的群組。 動畫物件只能新增至一個動畫控制器。 如果您需要將物件新增至另一個控制器,請先呼叫 RemoveAnimationObject。 如果您針對已新增至群組的物件呼叫具有新 GroupID 的 SetID,該物件將會從舊群組中移除,並新增至具有指定標識碼的另一個群組。

CAnimationController::AddKeyframeToGroup

將主要畫面格新增至群組。

BOOL AddKeyframeToGroup(
    UINT32 nGroupID,
    CBaseKeyFrame* pKeyframe);

參數

nGroupID
指定群組識別碼。

pKeyframe
主要畫面格的指標。

傳回值

如果函式成功,則為TRUE;否則為 FALSE。

備註

通常您不需要呼叫此方法,請改用 CAnimationController::CreateKeyframe,以自動建立和新增已建立的主要畫面格。

CAnimationController::AnimateGroup

準備群組以執行動畫,並選擇性地排程動畫。

BOOL AnimateGroup(
    UINT32 nGroupID,
    BOOL bScheduleNow = TRUE);

參數

nGroupID
指定 GroupID。

bScheduleNow
指定是否立即執行動畫。

傳回值

如果動畫已成功排程並執行,則為TRUE。

備註

此方法會執行建立分鏡腳本、新增動畫變數、套用轉換和設定主要畫面格的實際工作。 如果您將 bScheduleNow 設定為 FALSE,可能會延遲排程。 在此情況下,指定的群組會保存已針對動畫設定的分鏡腳本。 此時,您可以設定分鏡腳本和動畫變數的事件。 當您實際需要執行動畫呼叫 CAnimationController::ScheduleGroup 時。

CAnimationController::CAnimationController

建構動畫控制器。

CAnimationController(void);

CAnimationController::CleanUpGroup

由架構呼叫,以在排程動畫時清除群組。

void CleanUpGroup(UINT32 nGroupID);
void CleanUpGroup(CAnimationGroup* pGroup);

參數

nGroupID
指定 GroupID。

pGroup
要清除之動畫群組的指標。

備註

這個方法會從指定的群組中移除所有轉換和主要畫面格,因為它們在排程動畫之後並不相關。

CAnimationController::CreateKeyframe

建立隨轉換而改變的主要畫面格,將它加入指定的群組。

CKeyFrame* CreateKeyframe(
    UINT32 nGroupID,
    CBaseTransition* pTransition);

CKeyFrame* CreateKeyframe(
    UINT32 nGroupID,
    CBaseKeyFrame* pKeyframe,
    UI_ANIMATION_SECONDS offset = 0.0);

參數

nGroupID
指定主要畫面格建立對象的群組識別碼。

pTransition
轉換指標。 這項轉換之後,主要畫面格就會插入分鏡腳本中。

pKeyframe
這個主要畫面格的基底主要畫面格指標。

offset
pKeyframe 指定的基底主要畫面格位移,以秒為單位。

傳回值

函式成功後,新建立的主要畫面格指標。

備註

您可以儲存傳回的指標,讓其他的主要畫面格以新建立的主要畫面格為基礎 (請參閱第二個多載)。 即可開始主要畫面格的轉換,請參閱 CBaseTransition::SetKeyframes。 您不需要刪除以這種方式建立的主要畫面格,因為動畫群組會自動刪除它們。 根據其他主要畫面格和轉換建立主要畫面格時要小心,避免循環參照。

CAnimationController::EnableAnimationManagerEvent

設定或釋放當動畫管理員的狀態變更時要呼叫的處理程式。

virtual BOOL EnableAnimationManagerEvent(BOOL bEnable = TRUE);

參數

bEnable
指定是否要設定或釋放處理程式。

傳回值

如果處理程式已成功設定或釋放,則為TRUE。

備註

設定處理程式時,當動畫管理員的狀態變更時,Windows 動畫會呼叫 OnAnimationManagerStatusChanged。

CAnimationController::EnableAnimationTimerEventHandler

設定或釋放計時事件的處理程式,以及計時更新的處理程式。

virtual BOOL EnableAnimationTimerEventHandler(
    BOOL bEnable = TRUE,
    UI_ANIMATION_IDLE_BEHAVIOR idleBehavior = UI_ANIMATION_IDLE_BEHAVIOR_DISABLE);

參數

bEnable
指定要設定或釋放處理程式。

idleBehavior
指定定時器更新處理程式的閑置行為。

傳回值

如果已成功設定或釋放處理程式,則為TRUE;如果這個方法第二次呼叫而不先釋放處理程式,或發生任何其他錯誤,則為 FALSE。

備註

設定處理程式時(已啟用)Windows 動畫 API 會呼叫 OnAnimationTimerPreUpdate、OnAnimationTimerPostUpdate、OnRenderingTooSlow 方法。 您必須啟用動畫定時器,以允許 Windows 動畫 API 更新分鏡腳本。 否則,您必須呼叫 CAnimationController::UpdateAnimationManager,才能指示動畫管理員更新所有動畫變數的值。

CAnimationController::EnablePriorityComparisonHandler

設定或釋放要呼叫的優先順序比較處理程式,以判斷是否可以取消、結束、修剪或壓縮排程分鏡腳本。

virtual BOOL EnablePriorityComparisonHandler(DWORD dwHandlerType);

參數

dwHandlerType
UI_ANIMATION_PHT_旗標的組合(請參閱備註),這會指定要設定或釋放的處理程式。

傳回值

如果處理程式已成功設定或釋放,則為TRUE。

備註

設定處理程式時(已啟用)Windows 動畫會根據 dwHandlerType 呼叫下列虛擬方法:OnHasPriorityCancel、OnHasPriorityConclude、OnHasPriorityTrim、OnHasPriorityCompress。 dwHandler 可以是下列旗標的組合:UI_ANIMATION_PHT_NONE - 釋放所有處理程式 UI_ANIMATION_PHT_CANCEL - set Cancel comparison handler UI_ANIMATION_PHT_CONCLUDE - set Conclude comparison handler UI_ANIMATION_PHT_COMPRESS - set Compress comparison handler UI_ANIMATION_PHT_TRIM - set Trim comparison handler UI_ANIMATION_PHT_CANCEL_REMOVE - 移除 Cancel comparison handler UI_ANIMATION_PHT_CONCLUDE_REMOVE - 移除結束比較處理程式 UI_ANIMATION_PHT_COMPRESS_REMOVE - 拿掉壓縮比較處理程式 UI_ANIMATION_PHT_TRIM_REMOVE - 移除 Trim 比較處理程式

CAnimationController::EnableStoryboardEventHandler

設定或釋放文本狀態和更新事件的處理程式。

virtual BOOL EnableStoryboardEventHandler(
    UINT32 nGroupID,
    BOOL bEnable = TRUE);

參數

nGroupID
指定群組識別碼。

bEnable
指定是否要設定或釋放處理程式。

傳回值

如果處理程式已成功設定或釋放,則為TRUE;如果找到指定的動畫群組,或尚未起始指定群組的動畫,且其內部分鏡腳本為 NULL,則為 FALSE。

備註

設定處理程式時(已啟用)Windows 動畫 API 會呼叫 OnStoryboardStatusChanges 和 OnStoryboardUpdated 虛擬方法。 在針對指定的動畫群組呼叫 CAnimationController::Animate 之後,必須設定處理程式,因為它會建立封裝的 IUIAnimationStoryboard 物件。

CAnimationController::FindAnimationGroup

依其群組標識碼尋找動畫群組。

CAnimationGroup* FindAnimationGroup(UINT32 nGroupID);
CAnimationGroup* FindAnimationGroup(IUIAnimationStoryboard* pStoryboard);

參數

nGroupID
指定 GroupID。

pStoryboard
分鏡腳本的指標。

傳回值

如果找不到具有指定標識碼的群組,則為動畫群組的指標或 NULL。

備註

使用此方法在運行時間尋找動畫群組。 當具有特定 GroupID 的第一個動畫物件新增至動畫控制器時,就會建立群組並新增至動畫群組的內部清單。

CAnimationController::FindAnimationObject

尋找包含指定動畫變數的動畫物件。

BOOL FindAnimationObject(
    IUIAnimationVariable* pVariable,
    CAnimationBaseObject** ppObject,
    CAnimationGroup** ppGroup);

參數

pVariable
動畫變數的指標。

ppObject
輸出。 包含動畫物件的指標或 NULL。

ppGroup
輸出。 包含保存動畫物件或 NULL 之動畫群組的指標。

傳回值

如果找到物件,則為TRUE;否則為 FALSE。

備註

當需要從傳入動畫變數尋找動畫物件時,從事件處理程式呼叫。

CAnimationController::gkeyframeStoryboardStart

主要畫面格,表示分鏡腳本的開頭。

static CBaseKeyFrame gkeyframeStoryboardStart;

CAnimationController::GetKeyframeStoryboardStart

傳回識別分鏡腳本開頭的主要畫面格。

static CBaseKeyFrame* GetKeyframeStoryboardStart();

傳回值

基底主要畫面格的指標,可識別分鏡腳本的開頭。

備註

取得此主要畫面格,以根據腳本啟動時的任何其他主要畫面格或轉換。

CAnimationController::GetUIAnimationManager

提供封裝的 IUIAnimationManager 物件的存取權。

IUIAnimationManager* GetUIAnimationManager();

傳回值

如果建立動畫管理員失敗,則 IUIAnimationManager 介面或 NULL 的指標。

備註

如果目前的OS不支援 Windows 動畫 API,這個方法會傳回 NULL,並在之後所有 CAnimationController::IsValid 上的後續呼叫傳回 FALSE。 您可能需要存取 IUIAnimationManager,才能呼叫其介面方法,而不會由動畫控制器包裝。

CAnimationController::GetUIAnimationTimer

提供封裝的 IUIAnimationTimer 物件的存取權。

IUIAnimationTimer* GetUIAnimationTimer();

傳回值

如果動畫定時器建立失敗,IUIAnimationTimer 介面或 NULL 的指標。

備註

如果目前的OS不支援 Windows 動畫 API,這個方法會傳回 NULL,並在之後所有 CAnimationController::IsValid 上的後續呼叫傳回 FALSE。

CAnimationController::GetUITransitionFactory

如果轉換連結庫的建立失敗,IUIAnimationTransitionFactory 介面或 NULL 的指標。

IUIAnimationTransitionFactory* GetUITransitionFactory();

傳回值

如果轉換處理站的建立失敗,IUIAnimationTransitionFactory 或 NULL 的指標。

備註

如果目前的OS不支援 Windows 動畫 API,這個方法會傳回 NULL,並在之後所有 CAnimationController::IsValid 上的後續呼叫傳回 FALSE。

CAnimationController::GetUITransitionLibrary

提供封裝的 IUIAnimationTransitionLibrary 物件的存取權。

IUIAnimationTransitionLibrary* GetUITransitionLibrary();

傳回值

如果轉換連結庫的建立失敗,IUIAnimationTransitionLibrary 介面或 NULL 的指標。

備註

如果目前的OS不支援 Windows 動畫 API,這個方法會傳回 NULL,並在之後所有 CAnimationController::IsValid 上的後續呼叫傳回 FALSE。

CAnimationController::IsAnimationInProgress

指出至少有一個群組正在播放動畫。

virtual BOOL IsAnimationInProgress();

傳回值

如果此動畫控制器有動畫進行中,則為TRUE;否則為 FALSE。

備註

檢查動畫管理員的狀態,如果狀態為UI_ANIMATION_MANAGER_BUSY,則會傳回 TRUE。

CAnimationController::IsValid

告知動畫控制器是否有效。

BOOL IsValid() const;

傳回值

如果動畫控制器有效,則為TRUE;否則為 FALSE。

備註

只有在目前 OS 不支援 Windows 動畫 API,且動畫管理員的建立失敗時,這個方法才會傳回 FALSE,因為它未註冊。 您必須在 COM 連結庫初始化之後至少呼叫 GetUIAnimationManager 一次,以造成此旗標的設定。

CAnimationController::m_bIsValid

指定動畫控制器是否有效。 如果目前的OS不支援 Windows 動畫 API,此成員會設定為 FALSE。

BOOL m_bIsValid;

CAnimationController::m_lstAnimationGroups

屬於這個動畫控制器的動畫群組清單。

CList<CAnimationGroup*, CAnimationGroup*> m_lstAnimationGroups;

CAnimationController::m_pAnimationManager

儲存動畫管理員 COM 物件的指標。

ATL::CComPtr<IUIAnimationManager> m_pAnimationManager;

CAnimationController::m_pAnimationTimer

儲存動畫定時器 COM 物件的指標。

ATL::CComPtr<IUIAnimationTimer> m_pAnimationTimer;

CAnimationController::m_pRelatedWnd

相關 CWnd 物件的指標,可在動畫管理員的狀態變更或發生更新後事件時自動重新繪製。 可以是 NULL。

CWnd* m_pRelatedWnd;

CAnimationController::m_pTransitionFactory

儲存 Transition Factory COM 物件的指標。

ATL::CComPtr<IUIAnimationTransitionFactory> m_pTransitionFactory;

CAnimationController::m_pTransitionLibrary

儲存轉換連結庫 COM 物件的指標。

ATL::CComPtr<IUIAnimationTransitionLibrary> m_pTransitionLibrary;

CAnimationController::OnAfterSchedule

剛排程指定群組的動畫時,由架構呼叫。

virtual void OnAfterSchedule(CAnimationGroup* pGroup);

參數

pGroup
已排程之動畫群組的指標。

備註

默認實作會從指定的群組中移除主要畫面格,並從屬於指定群組的動畫變數轉換。 可以在衍生類別中覆寫,以在動畫排程時採取任何其他動作。

CAnimationController::OnAnimationIntegerValueChanged

當動畫變數的整數值變更時,由架構呼叫。

virtual void OnAnimationIntegerValueChanged(
    CAnimationGroup* pGroup,
    CAnimationBaseObject* pObject,
    IUIAnimationVariable* variable,
    INT32 newValue,
    INT32 prevValue);

參數

pGroup
保存值已變更之動畫對象的動畫群組指標。

pObject
動畫物件的指標,其中包含其值已變更的動畫變數。

variable
動畫變數的指標。

newValue
指定新的值。

prevValue
指定先前的值。

備註

如果您針對特定動畫變數或動畫物件呼叫 EnableIntegerValueChangedEvent 來啟用動畫變數事件,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。

CAnimationController::OnAnimationManagerStatusChanged

由架構呼叫,以響應動畫管理員的 StatusChanged 事件。

virtual void OnAnimationManagerStatusChanged(
    UI_ANIMATION_MANAGER_STATUS newStatus,
    UI_ANIMATION_MANAGER_STATUS previousStatus);

參數

newStatus
新的動畫管理員狀態。

previousStatus
先前的動畫管理員狀態。

備註

如果您使用 EnableAnimationManagerEvent 來啟用動畫管理員事件,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。 如果已使用 SetRelatedWnd 設定預設實作,則會更新相關的視窗。

CAnimationController::OnAnimationTimerPostUpdate

動畫更新完成之後,由架構呼叫。

virtual void OnAnimationTimerPostUpdate();

備註

如果您使用 EnableAnimationTimerEventHandler 來啟用定時器事件處理程式,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。

CAnimationController::OnAnimationTimerPreUpdate

在動畫更新開始之前,由架構呼叫。

virtual void OnAnimationTimerPreUpdate();

備註

如果您使用 EnableAnimationTimerEventHandler 來啟用定時器事件處理程式,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。

CAnimationController::OnAnimationTimerRenderingTooSlow

當動畫的轉譯幀速率低於最低所需的幀速率時,由架構呼叫。

virtual void OnAnimationTimerRenderingTooSlow(UINT32 fps);

參數

fps
每秒畫面格中的目前幀速率。

備註

如果您使用 EnableAnimationTimerEventHandler 來啟用定時器事件處理程式,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。 呼叫 IUIAnimationTimer::SetFrameRateThreshold 可指定最小所需的幀速率。

CAnimationController::OnAnimationValueChanged

當動畫變數的值已變更時,由架構呼叫。

virtual void OnAnimationValueChanged(
    CAnimationGroup* pGroup,
    CAnimationBaseObject* pObject,
    IUIAnimationVariable* variable,
    DOUBLE newValue,
    DOUBLE prevValue);

參數

pGroup
保存值已變更之動畫對象的動畫群組指標。

pObject
動畫物件的指標,其中包含其值已變更的動畫變數。

variable
動畫變數的指標。

newValue
指定新的值。

prevValue
指定先前的值。

備註

如果您使用針對特定動畫變數或動畫物件呼叫 EnableValueChangedEvent 來啟用動畫變數事件,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。

CAnimationController::OnBeforeAnimationStart

在排程動畫之前,由架構呼叫。

virtual void OnBeforeAnimationStart(CAnimationGroup* pGroup);

參數

pGroup
動畫群組的指標,其動畫即將啟動。

備註

此呼叫會路由傳送至相關的 CWnd,而且可以在衍生類別中覆寫,以在指定群組的動畫開始之前執行任何其他動作。

CAnimationController::OnHasPriorityCancel

由架構呼叫來解決排程衝突。

virtual BOOL OnHasPriorityCancel(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

參數

pGroupScheduled
擁有目前排程的分鏡腳本的群組。

pGroupNew
擁有新分鏡腳本的群組,其與 pGroupScheduled 所擁有的排定分鏡腳本發生排程衝突。

priorityEffect
如果 pGroupScheduled 具有較高的優先順序,可能會影響 pGroupNew。

傳回值

如果 pGroupNew 所擁有的分鏡腳本優先適用,應傳回 TRUE。 如果 pGroupScheduled 所擁有的分鏡腳本優先適用,應傳回 FALSE。

備註

如果您使用 CAnimationController::EnablePriorityComparisonHandler 和指定 UI_ANIMATION_PHT_CANCEL 來啟用優先順序比較事件,則會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。 如需衝突管理的詳細資訊,請參閱 Windows 動畫 API 檔。

CAnimationController::OnHasPriorityCompress

由架構呼叫來解決排程衝突。

virtual BOOL OnHasPriorityCompress(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

參數

pGroupScheduled
擁有目前排程的分鏡腳本的群組。

pGroupNew
擁有新分鏡腳本的群組,其與 pGroupScheduled 所擁有的排定分鏡腳本發生排程衝突。

priorityEffect
如果 pGroupScheduled 具有較高的優先順序,可能會影響 pGroupNew。

傳回值

如果 pGroupNew 所擁有的分鏡腳本優先適用,應傳回 TRUE。 如果 pGroupScheduled 所擁有的分鏡腳本優先適用,應傳回 FALSE。

備註

如果您使用 CAnimationController::EnablePriorityComparisonHandler 和指定 UI_ANIMATION_PHT_COMPRESS 來啟用優先順序比較事件,則會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。 如需衝突管理的詳細資訊,請參閱 Windows 動畫 API 檔。

CAnimationController::OnHasPriorityConclude

由架構呼叫來解決排程衝突。

virtual BOOL OnHasPriorityConclude(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

參數

pGroupScheduled
擁有目前排程的分鏡腳本的群組。

pGroupNew
擁有新分鏡腳本的群組,其與 pGroupScheduled 所擁有的排定分鏡腳本發生排程衝突。

priorityEffect
如果 pGroupScheduled 具有較高的優先順序,可能會影響 pGroupNew。

傳回值

如果 pGroupNew 所擁有的分鏡腳本優先適用,應傳回 TRUE。 如果 pGroupScheduled 所擁有的分鏡腳本優先適用,應傳回 FALSE。

備註

如果您使用 CAnimationController::EnablePriorityComparisonHandler 和指定 UI_ANIMATION_PHT_CONCLUDE 來啟用優先順序比較事件,則會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。 如需衝突管理的詳細資訊,請參閱 Windows 動畫 API 檔。

CAnimationController::OnHasPriorityTrim

由架構呼叫來解決排程衝突。

virtual BOOL OnHasPriorityTrim(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

參數

pGroupScheduled
擁有目前排程的分鏡腳本的群組。

pGroupNew
擁有新分鏡腳本的群組,其與 pGroupScheduled 所擁有的排定分鏡腳本發生排程衝突。

priorityEffect
如果 pGroupScheduled 具有較高的優先順序,可能會影響 pGroupNew。

傳回值

如果 pGroupNew 所擁有的分鏡腳本優先適用,應傳回 TRUE。 如果 pGroupScheduled 所擁有的分鏡腳本優先適用,應傳回 FALSE。

備註

如果您使用 CAnimationController::EnablePriorityComparisonHandler 和指定 UI_ANIMATION_PHT_TRIM 來啟用優先順序比較事件,則會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。 如需衝突管理的詳細資訊,請參閱 Windows 動畫 API 檔。

CAnimationController::OnStoryboardStatusChanged

腳本狀態變更時由架構呼叫。

virtual void OnStoryboardStatusChanged(
    CAnimationGroup* pGroup,
    UI_ANIMATION_STORYBOARD_STATUS newStatus,
    UI_ANIMATION_STORYBOARD_STATUS previousStatus);

參數

pGroup
擁有狀態已變更之分鏡腳本的動畫群組指標。

newStatus
指定新的狀態。

previousStatus
指定先前的狀態。

備註

如果您使用 CAnimationController::EnableStoryboardEventHandler 來啟用分鏡腳本事件,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。

CAnimationController::OnStoryboardUpdated

腳本更新時由架構呼叫。

virtual void OnStoryboardUpdated(CAnimationGroup* pGroup);

參數

pGroup
擁有分鏡腳本之群組的指標。

備註

如果您使用 CAnimationController::EnableStoryboardEventHandler 來啟用分鏡腳本事件,就會呼叫這個方法。 可覆寫衍生類別中的該方法來採取應用程式的特定動作。

CAnimationController::RemoveAllAnimationGroups

從動畫控制器移除所有動畫群組。

void RemoveAllAnimationGroups();

備註

如果儲存在應用層級,則會刪除所有群組,其指標必須失效。 如果刪除群組的 CAnimationGroup::m_bAutodestroyAnimationObjects為 TRUE,則會刪除屬於該群組的所有動畫物件;否則,它們對父動畫控制器的參考將會設定為 NULL,而且可以新增至另一個控制器。

CAnimationController::RemoveAnimationGroup

從動畫控制器移除具有指定標識碼的動畫群組。

void RemoveAnimationGroup(UINT32 nGroupID);

參數

nGroupID
指定動畫群組識別碼。

備註

這個方法會從群組的內部清單中移除動畫群組並加以刪除,因此,如果您儲存該動畫群組的指標,則必須將其失效。 如果 CAnimationGroup::m_bAutodestroyAnimationObjects為 TRUE,則會刪除屬於該群組的所有動畫物件;否則,它們對父動畫控制器的參考將會設定為 NULL,而且可以新增至另一個控制器。

CAnimationController::RemoveAnimationObject

從動畫控制器移除動畫物件。

void RemoveAnimationObject(
    CAnimationBaseObject* pObject,
    BOOL bNoDelete = FALSE);

參數

pObject
動畫物件的指標。

bNoDelete
如果此參數為TRUE,則不會在移除時刪除物件。

備註

從動畫控制器和動畫群組中移除動畫物件。 如果特定物件不應該再產生動畫效果,或需要將物件移至另一個動畫控制器,請呼叫此函式。 在最後一個案例中,bNoDelete 必須是 TRUE。

CAnimationController::RemoveTransitions

從屬於指定群組的動畫物件中移除轉換。

void RemoveTransitions(UINT32 nGroupID);

參數

nGroupID
指定群組識別碼。

備註

群組會在其動畫物件上迴圈,並針對每個動畫物件呼叫 ClearTransitions(FALSE)。 在排程動畫之後,架構會呼叫這個方法。

CAnimationController::ScheduleGroup

排程動畫。

BOOL ScheduleGroup(
    UINT32 nGroupID,
    UI_ANIMATION_SECONDS time = 0.0);

參數

nGroupID
指定要排程的動畫群組識別碼。

time
指定排程的時間。

傳回值

如果已順利排程動畫,則為TRUE。 如果腳本尚未建立,或發生其他錯誤,則為 FALSE。

備註

您必須呼叫 AnimateGroup,並將參數 bScheduleNow 設定為 FALSE 之前 ScheduleGroup。 您可以指定從 IUIAnimationTimer::GetTime 取得的所需動畫時間。 如果 time 參數為 0.0,則會排程目前時間的動畫。

CAnimationController::SetRelatedWnd

建立動畫控制器與視窗之間的關聯性。

void SetRelatedWnd(CWnd* pWnd);

參數

pWnd
要設定之視窗物件的指標。

備註

如果已設定相關的 CWnd 物件,當動畫管理員的狀態已變更或更新後發生定時器事件時,動畫控制器可以自動更新它(傳送WM_PAINT訊息)。

CAnimationController::UpdateAnimationManager

指示動畫管理員更新所有動畫變數的值。

virtual void UpdateAnimationManager();

備註

呼叫此方法會將動畫管理員前進到目前時間,視需要變更分鏡腳本的狀態,並將任何動畫變數更新為適當的插補值。 此方法會在內部呼叫 IUIAnimationTimer::GetTime(timeNow) 和 IUIAnimationManager::Update(timeNow)。 覆寫衍生類別中的這個方法,以自定義此行為。

另請參閱

類別