CAnimationBaseObject 类

所有动画对象的基类。

语法

class CAnimationBaseObject : public CObject;

成员

公共构造函数

名称 描述
CAnimationBaseObject::CAnimationBaseObject 已重载。 构造动画对象。
CAnimationBaseObject::~CAnimationBaseObject 析构函数。 在销毁动画对象时调用。

公共方法

名称 描述
CAnimationBaseObject::ApplyTransitions 使用封装的动画变量向情节提要添加转换。
CAnimationBaseObject::ClearTransitions 删除所有相关转换。
CAnimationBaseObject::ContainsVariable 确定动画对象是否包含特定的动画变量。
CAnimationBaseObject::CreateTransitions 创建与动画对象关联的转换。
CAnimationBaseObject::DetachFromController 将动画对象与父动画控制器分离。
CAnimationBaseObject::EnableIntegerValueChangedEvent 设置 Integer Value Changed 事件处理程序。
CAnimationBaseObject::EnableValueChangedEvent 设置 Value Changed 事件处理程序。
CAnimationBaseObject::GetAutodestroyTransitions 指示是否自动销毁相关转换。
CAnimationBaseObject::GetGroupID 返回当前组 ID。
CAnimationBaseObject::GetObjectID 返回当前对象 ID。
CAnimationBaseObject::GetUserData 删除用户定义的数据。
CAnimationBaseObject::SetAutodestroyTransitions 设置标志以自动销毁转换。
CAnimationBaseObject::SetID 设置新 ID。
CAnimationBaseObject::SetUserData 设置用户定义的数据。

受保护方法

名称 描述
CAnimationBaseObject::GetAnimationVariableList 收集指向包含的动画变量的指针。
CAnimationBaseObject::SetParentAnimationObjects 在动画对象中包含的动画变量及这些对象的容器之间建立关系。

受保护的数据成员

名称 描述
CAnimationBaseObject::m_bAutodestroyTransitions 指定是否应自动销毁相关转换。
CAnimationBaseObject::m_dwUserData 存储用户定义的数据。
CAnimationBaseObject::m_nGroupID 指定动画对象的组 ID。
CAnimationBaseObject::m_nObjectID 指定动画对象的对象 ID。
CAnimationBaseObject::m_pParentController 指向父动画控制器的指针。

备注

此类为所有动画对象实现基本方法。 动画对象可以表示应用程序中的值、点、大小、矩形或颜色以及表示任何自定义实体。 动画对象存储在动画组中(请参阅 CAnimationGroup)。 每个组可以单独进行动画处理,并且可以被视为情节提要的模拟。 动画对象封装一个或多个动画变量(请参阅 CAnimationVariable),具体取决于其逻辑表示形式。 例如,CAnimationRect 包含四个动画变量 - 一个变量用于矩形的每一边。 每个动画对象类公开重载的 AddTransition 方法,该方法应该用于将转换应用于封装的动画变量。 可以通过对象 ID(可选)和组 ID 来标识动画对象。 需要组 ID 才能将动画对象放置到正确的组,但如果未指定组 ID,则会将对象放置在 ID 为 0 的默认组中。 如果调用具有不同 GroupID 的 SetID,动画对象将移动到另一个组(必要时将创建新组)。

继承层次结构

CObject

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
指定组 ID。

nObjectID
指定对象 ID。

dwUserData
用户定义的数据,可与动画对象相关联,并稍后在运行时检索。

备注

构造动画对象并分配默认对象 ID (0) 和组 ID (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::DetachFromController

将动画对象与父动画控制器分离。

void DetachFromController();

备注

此方法在内部使用。

CAnimationBaseObject::EnableIntegerValueChangedEvent

设置 Integer Value Changed 事件处理程序。

virtual void EnableIntegerValueChangedEvent(
    CAnimationController* pController,
    BOOL bEnable);

参数

pController
指向父控制器的指针。

bEnable
指定是启用还是禁用 Integer Value 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;

参数

list
必须用动画对象中包含的动画变量填充的列表。

注解

必须在派生类中重写此纯虚拟方法。 动画对象可能包含一个或多个动画变量(具体取决于其类型)。 例如,CAnimationPoint 包含两个变量,分别对应于 X 和 Y 坐标。 基类 CAnimationBaseObject 实现一些泛型方法,这可用于对动画变量列表执行操作:ApplyTransitions、ClearTransitions、EnableValueChangedEvent、EnableIntegerValueChangedEvent。 这些方法调用 GetAnimationVariableList,它通过特定动画对象中包含的实际动画变量填充在派生类中,然后循环访问列表并执行必要的操作。 如果创建自定义动画对象,则必须将该对象中包含的所有动画变量添加到 list 中

CAnimationBaseObject::GetAutodestroyTransitions

指示是否自动销毁相关转换。

BOOL GetAutodestroyTransitions() const;

返回值

如果为 TRUE,则会自动销毁相关转换;如果为 FALSE,则应通过调用应用程序来解除分配转换对象。

备注

默认情况下,此标志为 TRUE。 仅当已在堆栈上分配转换和/或应通过调用应用程序来解除分配转换时设置此标志。

CAnimationBaseObject::GetGroupID

返回当前组 ID。

UINT32 GetGroupID() const;

返回值

当前组 ID。

备注

使用此方法检索组 ID。 如果未在构造函数中或使用 SetID 显式设置组 ID,则为 0。

CAnimationBaseObject::GetObjectID

返回当前对象 ID。

UINT32 GetObjectID() const;

返回值

当前对象 ID。

备注

使用此方法检索对象 ID。 如果未在构造函数中或使用 SetID 显式设置对象 ID,则为 0。

CAnimationBaseObject::GetUserData

删除用户定义的数据。

DWORD GetUserData() const;

返回值

自定义数据的值。

注解

调用此方法以在运行时检索自定义数据。 如果未在构造函数中或使用 SetUserData 显式初始化返回的值,则返回的值将为 0。

CAnimationBaseObject::m_bAutodestroyTransitions

指定是否应自动销毁相关转换。

BOOL m_bAutodestroyTransitions;

CAnimationBaseObject::m_dwUserData

存储用户定义的数据。

DWORD m_dwUserData;

CAnimationBaseObject::m_nGroupID

指定动画对象的组 ID。

UINT32 m_nGroupID;

CAnimationBaseObject::m_nObjectID

指定动画对象的对象 ID。

UINT32 m_nObjectID;

CAnimationBaseObject::m_pParentController

指向父动画控制器的指针。

CAnimationController* m_pParentController;

CAnimationBaseObject::SetAutodestroyTransitions

设置标志以自动销毁转换。

void SetAutodestroyTransitions(BOOL bValue);

参数

bValue
指定自动销毁标志。

注解

仅当使用运算符 new 分配转换对象时设置此标志。 如果出于某种原因在堆栈上分配转换对象,则自动销毁标志应为 FALSE。 默认情况下,此标志为 TRUE。

CAnimationBaseObject::SetID

设置新 ID。

void SetID(
    UINT32 nObjectID,
    UINT32 nGroupID = 0);

参数

nObjectID
指定新的对象 ID。

nGroupID
指定新的组 ID。

备注

允许更改对象 ID 和组 ID。 如果新的组 ID 与当前 ID 不同,则会将动画对象移动到另一个组(必要时将创建新组)。

CAnimationBaseObject::SetParentAnimationObjects

在动画对象中包含的动画变量及这些对象的容器之间建立关系。

virtual void SetParentAnimationObjects();

备注

次帮助程序可用于在动画对象中包含的动画变量及这些对象的容器之间建立关系。 它将循环访问动画变量,并将指向父动画对象的后指针设置为指向每个动画变量。 在当前实现中,实际关系是在 CAnimationBaseObject::ApplyTransitions 中建立的,因此在调用 CAnimationGroup::Animate 之前不会设置后指针。 在处理事件并且需要从 CAnimationVariable 获取父动画对象时,了解关系可能很有用。 Use CAnimationVariable::GetParentAnimationObject.

CAnimationBaseObject::SetUserData

设置用户定义的数据。

void SetUserData (DWORD dwUserData);

参数

dwUserData
指定自定义数据。

备注

使用此方法将自定义数据与动画对象相关联。 稍后可以通过 GetUserData 在运行时检索此数据。

另请参阅