CAnimationGroup 类

实现一个动画组并结合动画情节提要、动画对象和转换来定义动画。

语法

class CAnimationGroup;

成员

公共构造函数

名称 描述
CAnimationGroup::CAnimationGroup 构造动画组。
CAnimationGroup::~CAnimationGroup 析构函数。 当动画组被销毁时调用。

公共方法

名称 描述
CAnimationGroup::Animate 对组进行动画处理。
CAnimationGroup::ApplyTransitions 将转换应用于动画对象。
CAnimationGroup::FindAnimationObject 查找包含指定动画变量的动画对象。
CAnimationGroup::GetGroupID 返回 GroupID。
CAnimationGroup::RemoveKeyframes 移除并选择性销毁属于动画组的所有关键帧。
CAnimationGroup::RemoveTransitions 从属于动画组的动画对象中移除转换。
CAnimationGroup::Schedule 在指定时间计划动画。
CAnimationGroup::SetAutodestroyTransitions 指示属于组的所有动画对象自动销毁转换。

受保护方法

名称 描述
CAnimationGroup::AddKeyframes 将关键帧添加到情节提要的帮助程序。
CAnimationGroup::AddTransitions 将转换添加到情节提要的帮助程序。
CAnimationGroup::CreateTransitions 创建 COM 转换对象的帮助程序。

公共数据成员

“属性” 描述
CAnimationGroup::m_bAutoclearTransitions 指定如何清除属于组的动画对象的转换。 如果此成员为 TRUE,则在计划动画时会自动删除转换。 否则,需要手动删除转换。
CAnimationGroup::m_bAutodestroyAnimationObjects 指定如何销毁动画对象。 如果此参数为 TRUE,动画对象将在组被销毁时自动销毁。 否则必须手动销毁动画对象。 默认值是 FALSE。 仅当属于组的所有动画对象都使用运算符 new 动态分配时,才将此值设置为 TRUE。
CAnimationGroup::m_bAutodestroyKeyframes 指定如何销毁关键帧。 如果该值为 TRUE,则所有关键帧都被移除并销毁;否则它们仅从列表中删除。 默认值为 TRUE。
CAnimationGroup::m_lstAnimationObjects 包含动画对象的列表。
CAnimationGroup::m_lstKeyFrames 包含关键帧列表。
CAnimationGroup::m_pStoryboard 指向动画情节提要。 此指针仅在调用 Animate 后有效。

受保护的数据成员

名称 描述
CAnimationGroup::m_nGroupID 动画组的唯一标识符。
CAnimationGroup::m_pParentController 指向该组所属的动画控制器的指针。

备注

使用 CAnimationController::AddAnimationObject 添加动画对象时,动画组由动画控制器 (CAnimationController) 自动创建。 动画组由 GroupID 标识,通常作为操作动画组的参数。 GroupID 取自添加到新动画组的第一个动画对象。 调用 CAnimationController::AnimateGroup 后会创建一个封装的动画情节提要,可以通过公共成员 m_pStoryboard 访问。

继承层次结构

CAnimationGroup

要求

标头: afxanimationcontroller.h

CAnimationGroup::~CAnimationGroup

析构函数。 当动画组被销毁时调用。

~CAnimationGroup();

CAnimationGroup::AddKeyframes

将关键帧添加到情节提要的帮助程序。

void AddKeyframes(IUIAnimationStoryboard* pStoryboard, BOOL bAddDeep);

参数

pStoryboard
指向情节提要 COM 对象的指针。

bAddDeep
指定此方法是否应添加依赖于其他关键帧的情节提要关键帧。

CAnimationGroup::AddTransitions

将转换添加到情节提要的帮助程序。

void AddTransitions(
    IUIAnimationStoryboard* pStoryboard,
    BOOL bDependOnKeyframes);

参数

pStoryboard
指向情节提要 COM 对象的指针。

bDependOnKeyframes

CAnimationGroup::Animate

对组进行动画处理。

BOOL Animate(
    IUIAnimationManager* pManager,
    IUIAnimationTimer* pTimer,
    BOOL bScheduleNow);

参数

pManager
pTimerbScheduleNow

返回值

如果该方法成功,则返回 TRUE;否则返回 FALSE。

备注

如果 bScheduleNow 为 TRUE,此方法会创建一个内部情节提要、创建和应用转换并计划动画。 如果 bScheduleNow 为 FALSE,则需要调用 Schedule 在指定时间启动动画。

CAnimationGroup::ApplyTransitions

将转换应用于动画对象。

void ApplyTransitions();

备注

如果尚未创建情节提要,则此方法在调试模式下 ASSERTS。 它首先创建所有转换,然后添加“静态”关键帧(依赖于偏移的关键帧),添加不依赖于关键帧的转换,根据转换和其他关键帧添加关键帧,最后添加依赖于关键帧的转换。

CAnimationGroup::CAnimationGroup

构造动画组。

CAnimationGroup(CAnimationController* pParentController, UINT32 nGroupID);

参数

pParentController
指向创建组的动画控制器的指针。

nGroupID
指定 GroupID。

CAnimationGroup::CreateTransitions

创建 COM 转换对象的帮助程序。

BOOL CreateTransitions();

返回值

如果方法成功,则为 TRUE;否则为 FALSE。

CAnimationGroup::FindAnimationObject

查找包含指定动画变量的动画对象。

CAnimationBaseObject* FindAnimationObject(IUIAnimationVariable* pVariable);

参数

pVariable
指向动画变量的指针。

返回值

指向动画对象的指针,如果未找到动画对象,则为 NULL。

CAnimationGroup::GetGroupID

返回 GroupID。

UINT32 GetGroupID() const;

返回值

组标识符。

CAnimationGroup::m_bAutoclearTransitions

指定如何清除属于组的动画对象的转换。 如果此成员为 TRUE,则在计划动画时会自动删除转换。 否则,需要手动删除转换。

BOOL m_bAutoclearTransitions;

CAnimationGroup::m_bAutodestroyAnimationObjects

指定如何销毁动画对象。 如果此参数为 TRUE,动画对象将在组被销毁时自动销毁。 否则必须手动销毁动画对象。 默认值是 FALSE。 仅当属于组的所有动画对象都使用运算符 new 动态分配时,才将此值设置为 TRUE。

BOOL m_bAutodestroyAnimationObjects;

CAnimationGroup::m_bAutodestroyKeyframes

指定如何销毁关键帧。 如果该值为 TRUE,则所有关键帧都被移除并销毁;否则它们仅从列表中删除。 默认值为 TRUE。

BOOL m_bAutodestroyKeyframes;

CAnimationGroup::m_lstAnimationObjects

包含动画对象的列表。

CObList m_lstAnimationObjects;

CAnimationGroup::m_lstKeyFrames

包含关键帧列表。

CObList m_lstKeyFrames;

CAnimationGroup::m_nGroupID

动画组的唯一标识符。

UINT32 m_nGroupID;

CAnimationGroup::m_pParentController

指向该组所属的动画控制器的指针。

CAnimationController* m_pParentController;

CAnimationGroup::m_pStoryboard

指向动画情节提要。 此指针仅在调用 Animate 后有效。

ATL::CComPtr<IUIAnimationStoryboard> m_pStoryboard;

CAnimationGroup::RemoveKeyframes

移除并选择性销毁属于动画组的所有关键帧。

void RemoveKeyframes();

备注

如果 m_bAutodestroyKeyframes 成员为 TRUE,则移除并销毁关键帧,否则仅从关键帧的内部列表中移除关键帧。

CAnimationGroup::RemoveTransitions

从属于动画组的动画对象中移除转换。

void RemoveTransitions();

备注

如果 m_bAutoclearTransitions 标志设置为 TRUE,此方法将遍历属于该组的所有动画对象并调用 CAnimationObject::ClearTransitions(FALSE)。

CAnimationGroup::Schedule

在指定时间计划动画。

BOOL Schedule(IUIAnimationTimer* pTimer, UI_ANIMATION_SECONDS time);

参数

pTimer
指向动画计时器的指针。

time
指定计划动画的时间。

返回值

如果方法成功,则为 TRUE;如果方法失败或未在 bScheduleNow 设置为 FALSE 的情况下调用 Animate,则为 FALSE。

注解

调用此函数以在指定时间计划动画。 必须首先在 bScheduleNow 设置为 FALSE 的情况下调用 Animate。

CAnimationGroup::SetAutodestroyTransitions

指示属于组的所有动画对象自动销毁转换。

void SetAutodestroyTransitions(BOOL bAutoDestroy = TRUE);

参数

bAutoDestroy
指定如何销毁转换。

备注

仅当在堆栈上分配转换时,才将此值设置为 FALSE。 默认值为 TRUE,因此强烈建议使用运算符 new 分配转换对象。

另请参阅