CAnimationController 類別
實作動畫控制器,提供用來建立和管理動畫的中央介面。
語法
class CAnimationController : public CObject;
成員
公用建構函式
名稱 | 描述 |
---|---|
CAnimationController::CAnimationController | 建構動畫控制器。 |
CAnimationController::~CAnimationController | 解構函式。 當動畫控制器對象被終結時呼叫。 |
公用方法
受保護的方法
名稱 | 描述 |
---|---|
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,並在必要時使一或多個視窗失效。
繼承階層架構
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)。 覆寫衍生類別中的這個方法,以自定義此行為。