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 分配转换对象。