CAnimationBaseObject 類別
所有動畫物件的基底類別。
語法
class CAnimationBaseObject : public CObject;
成員
公用建構函式
名稱 | 描述 |
---|---|
CAnimationBaseObject::CAnimationBaseObject | 已多載。 建構動畫物件。 |
CAnimationBaseObject::~CAnimationBaseObject | 解構函式。 當動畫對象被終結時呼叫。 |
公用方法
名稱 | 描述 |
---|---|
CAnimationBaseObject::ApplyTransitions | 使用封裝的動畫變數,將轉換新增至分鏡腳本。 |
CAnimationBaseObject::ClearTransitions | 拿掉所有相關轉換。 |
CAnimationBaseObject::ContainsVariable | 判斷動畫物件是否包含特定的動畫變數。 |
CAnimationBaseObject::CreateTransitions | 建立與動畫對象相關聯的轉換。 |
CAnimationBaseObject::D etachFromController | 從父動畫控制器中斷鏈接動畫物件。 |
CAnimationBaseObject::EnableIntegerValueChangedEvent | 設定整數值已變更事件處理程式。 |
CAnimationBaseObject::EnableValueChangedEvent | 設定 Value Changed 事件處理程式。 |
CAnimationBaseObject::GetAutodestroyTransitions | 指出是否自動終結相關的轉換。 |
CAnimationBaseObject::GetGroupID | 傳回目前的群組標識碼。 |
CAnimationBaseObject::GetObjectID | 傳回目前的物件識別碼。 |
CAnimationBaseObject::GetUserData | 傳回使用者定義的數據。 |
CAnimationBaseObject::SetAutodestroyTransitions | 設定旗標以自動終結轉換。 |
CAnimationBaseObject::SetID | 設定新的識別碼。 |
CAnimationBaseObject::SetUserData | 設定使用者定義的數據。 |
受保護的方法
名稱 | 描述 |
---|---|
CAnimationBaseObject::GetAnimationVariableList | 收集自主動畫變數的指標。 |
CAnimationBaseObject::SetParentAnimationObjects | 建立動畫變數之間的關聯性,這些變數包含在動畫物件及其容器中。 |
受保護的資料成員
名稱 | 描述 |
---|---|
CAnimationBaseObject::m_bAutodestroyTransitions | 指定是否應該自動終結相關的轉換。 |
CAnimationBaseObject::m_dwUserData | 儲存使用者定義的數據。 |
CAnimationBaseObject::m_nGroupID | 指定動畫物件的群組識別碼。 |
CAnimationBaseObject::m_nObjectID | 指定動畫物件的物件識別碼。 |
CAnimationBaseObject::m_pParentController | 父動畫控制器的指標。 |
備註
這個類別會實作所有動畫物件的基本方法。 動畫物件可以代表應用程式中的值、點、大小、矩形或色彩,以及任何自定義實體。 動畫物件會儲存在動畫群組中(請參閱 CAnimationGroup)。 每個群組都可以個別產生動畫效果,並可視為分鏡腳本的類比。 動畫物件會封裝一或多個動畫變數(請參閱 CAnimationVariable),視其邏輯表示法而定。 例如,CAnimationRect 包含四個動畫變數 -一個矩形每一側的變數。 每個動畫物件類別都會公開多載的 AddTransition 方法,這個方法應該用來將轉換套用至封裝的動畫變數。 動畫物件可以透過物件標識碼(選擇性地)和群組標識碼來識別。 必須有群組標識碼,才能將動畫物件放置到正確的群組,但如果未指定群組標識符,則會將物件放在標識符為0的預設群組中。 如果您使用不同的 GroupID 呼叫 SetID,動畫物件將會移至另一個群組(必要時會建立新的群組)。
繼承階層架構
CAnimationBaseObject
需求
標頭: afxanimationcontroller.h
CAnimationBaseObject::~CAnimationBaseObject
解構函式。 當動畫對象被終結時呼叫。
virtual ~CAnimationBaseObject();
CAnimationBaseObject::ApplyTransitions
使用封裝的動畫變數,將轉換新增至分鏡腳本。
virtual BOOL ApplyTransitions(
IUIAnimationStoryboard* pStoryboard,
BOOL bDependOnKeyframes);
參數
pStoryboard
分鏡腳本的指標。
bDependOnKeyframes
當 FALSE 時,這個方法只會新增不相依於主要畫面格的轉換。
傳回值
如果成功新增轉換,則為TRUE。
備註
將已新增 AddTransition 的相關轉換(衍生類別中的多載方法)新增至分鏡腳本。
CAnimationBaseObject::CAnimationBaseObject
建構動畫物件。
CAnimationBaseObject();
CAnimationBaseObject(
UINT32 nGroupID,
UINT32 nObjectID = (UINT32)-1,
DWORD dwUserData = 0);
參數
nGroupID
指定群組識別碼。
nObjectID
指定物件識別碼。
dwUserData
使用者定義的數據,可以與動畫對象相關聯,稍後在運行時間擷取。
備註
建構動畫物件,並指派預設物件標識碼 (0) 和群組標識碼 (0)。
CAnimationBaseObject::ClearTransitions
拿掉所有相關轉換。
virtual void ClearTransitions(BOOL bAutodestroy);
參數
bAutodestroy
指定是否要自動終結轉換物件,或只是從相關清單中移除它們。
備註
如果 bAutodestroy 或 m_bAutodestroyTransitions 旗標為 TRUE,則移除所有相關轉換並終結它們。 只有在未在堆疊上配置轉換時,才會自動終結轉換。 如果上述旗標為 FALSE,則轉換只會從相關轉換的內部清單中移除。
CAnimationBaseObject::ContainsVariable
判斷動畫物件是否包含特定的動畫變數。
virtual BOOL ContainsVariable(IUIAnimationVariable* pVariable);
參數
pVariable
動畫變數的指標。
傳回值
如果動畫變數包含在動畫物件中,則為TRUE;否則為 FALSE。
備註
這個方法可用來判斷 pVariable 指定的動畫變數是否包含在動畫物件內。 動畫對象,視其類型而定,可能會包含數個動畫變數。 例如,CAnimationColor 包含三個變數,每個色彩元件各一個變數(紅色、綠色和藍色)。 當動畫變數的值已變更時,Windows 動畫 API 會傳送 ValueChanged 或 IntegerValueChanged 事件(如果已啟用),而此事件的參數是動畫變數的介面 IUIAnimationVariable 的指標。 這個方法有助於從包含 COM 物件的指標取得動畫指標。
CAnimationBaseObject::CreateTransitions
建立與動畫對象相關聯的轉換。
BOOL CreateTransitions();
傳回值
如果成功建立轉換,則為TRUE;否則為 FALSE。
備註
迴圈查看封裝在衍生動畫物件中的動畫變數清單,並建立與每個動畫變數相關聯的轉換。
CAnimationBaseObject::D etachFromController
從父動畫控制器中斷鏈接動畫物件。
void DetachFromController();
備註
此方法會在內部使用。
CAnimationBaseObject::EnableIntegerValueChangedEvent
設定整數值已變更事件處理程式。
virtual void EnableIntegerValueChangedEvent(
CAnimationController* pController,
BOOL bEnable);
參數
pController
父控制器的指標。
bEnable
指定要啟用或停用整數值 Changed 事件。
備註
如果已啟用 Integer Value Changed 事件處理程式,您可以在 CAnimationController::OnAnimationIntegerValueChanged 方法中處理此事件,這應該在 CAnimationController 衍生類別中覆寫。 每次動畫整數值變更時,都會呼叫這個方法。
CAnimationBaseObject::EnableValueChangedEvent
設定 Value Changed 事件處理程式。
virtual void EnableValueChangedEvent(
CAnimationController* pController,
BOOL bEnable);
參數
pController
父控制器的指標。
bEnable
指定要啟用或停用 Value Changed 事件。
備註
如果已啟用 Value Changed 事件處理程式,您可以在 CAnimationController::OnAnimationValueChanged 方法中處理此事件,這應該在 CAnimationController 衍生類別中覆寫。 每次動畫值變更時,都會呼叫這個方法。
CAnimationBaseObject::GetAnimationVariableList
收集自主動畫變數的指標。
virtual void GetAnimationVariableList(
CList<CAnimationVariable*,
CAnimationVariable*>& list) = 0;
參數
清單
必須填入動畫物件中包含的動畫變數的清單。
備註
這個純虛擬方法必須在衍生類別中覆寫。 動畫對象,視其類型而定,包含一或多個動畫變數。 例如,CAnimationPoint 分別包含 X 和 Y 座標的兩個變數。 基類 CAnimationBaseObject 會實作一些泛型方法,其作用於動畫變數清單:ApplyTransitions、ClearTransitions、EnableValueChangedEvent、EnableIntegerValueChangedEvent。 這些方法會呼叫 GetAnimationVariableList,其會填入衍生類別,其中包含特定動畫物件中包含的實際動畫變數,然後迴圈查看清單並執行必要的動作。 如果您建立自定義動畫物件,則必須新增 以 列出 該物件中包含的所有動畫變數。
CAnimationBaseObject::GetAutodestroyTransitions
指出是否自動終結相關的轉換。
BOOL GetAutodestroyTransitions() const;
傳回值
如果為 TRUE,則會自動終結相關的轉換;如果為 FALSE,則呼叫應用程式應該解除分配轉換物件。
備註
根據預設,此旗標為TRUE。 只有在您在堆疊和/或轉換上配置轉換時,呼叫端應用程式才應取消配置此旗標。
CAnimationBaseObject::GetGroupID
傳回目前的群組標識碼。
UINT32 GetGroupID() const;
傳回值
目前的群組標識碼。
備註
使用這個方法來擷取群組標識碼。 如果在建構函式或 SetID 中未明確設定群組標識碼,則為 0。
CAnimationBaseObject::GetObjectID
傳回目前的物件識別碼。
UINT32 GetObjectID() const;
傳回值
目前的物件識別碼。
備註
使用這個方法來擷取對象標識碼。 如果物件標識碼尚未在建構函式或 SetID 中明確設定,則為 0。
CAnimationBaseObject::GetUserData
傳回使用者定義的數據。
DWORD GetUserData() const;
傳回值
自訂數據的值。
備註
呼叫此方法以在運行時間擷取自定義數據。 如果傳回的值在建構函式或 SetUserData 中未明確初始化,則會是 0。
CAnimationBaseObject::m_bAutodestroyTransitions
指定是否應該自動終結相關的轉換。
BOOL m_bAutodestroyTransitions;
CAnimationBaseObject::m_dwUserData
儲存使用者定義的數據。
DWORD m_dwUserData;
CAnimationBaseObject::m_nGroupID
指定動畫物件的群組識別碼。
UINT32 m_nGroupID;
CAnimationBaseObject::m_nObjectID
指定動畫物件的物件識別碼。
UINT32 m_nObjectID;
CAnimationBaseObject::m_pParentController
父動畫控制器的指標。
CAnimationController* m_pParentController;
CAnimationBaseObject::SetAutodestroyTransitions
設定旗標以自動終結轉換。
void SetAutodestroyTransitions(BOOL bValue);
參數
bValue
指定自動終結旗標。
備註
只有在您使用運算符 new 配置轉換物件時,才設定此旗標。 如果基於某些原因,轉換物件配置在堆疊上,則自動終結旗標應該是 FALSE。 根據預設,此旗標為TRUE。
CAnimationBaseObject::SetID
設定新的識別碼。
void SetID(
UINT32 nObjectID,
UINT32 nGroupID = 0);
參數
nObjectID
指定新的物件識別碼。
nGroupID
指定新的群組識別碼。
備註
可讓您變更物件識別碼和群組標識碼。 如果新的群組標識碼與目前的標識碼不同,動畫物件會移至另一個群組(如有必要,將會建立新的群組)。
CAnimationBaseObject::SetParentAnimationObjects
建立動畫變數之間的關聯性,這些變數包含在動畫物件及其容器中。
virtual void SetParentAnimationObjects();
備註
此協助程式可用來建立動畫物件中包含的動畫變數與其容器之間的關聯性。 它會迴圈處理動畫變數,並將父動畫物件的返回指標設定為每個動畫變數。 在目前的實作中,實際關聯性是在 CAnimationBaseObject::ApplyTransitions 中建立,因此在您呼叫 CAnimationGroup::Animate 之前,不會設定返回指標。 當您處理事件並需要從 CAnimationVariable 取得父動畫物件時,瞭解關聯性可能會很有説明。 使用 CAnimationVariable::GetParentAnimationObject。
CAnimationBaseObject::SetUserData
設定使用者定義的數據。
void SetUserData (DWORD dwUserData);
參數
dwUserData
指定自訂數據。
備註
使用這個方法可將自定義數據與動畫物件產生關聯。 稍後,GetUserData 可能會在運行時間擷取此數據。