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();
将关键帧添加到情节提要的帮助程序。
void AddKeyframes(IUIAnimationStoryboard* pStoryboard, BOOL bAddDeep);
pStoryboard
指向情节提要 COM 对象的指针。
bAddDeep
指定此方法是否应添加依赖于其他关键帧的情节提要关键帧。
将转换添加到情节提要的帮助程序。
void AddTransitions(
IUIAnimationStoryboard* pStoryboard,
BOOL bDependOnKeyframes);
pStoryboard
指向情节提要 COM 对象的指针。
bDependOnKeyframes
对组进行动画处理。
BOOL Animate(
IUIAnimationManager* pManager,
IUIAnimationTimer* pTimer,
BOOL bScheduleNow);
pManager
pTimerbScheduleNow
如果该方法成功,则返回 TRUE;否则返回 FALSE。
如果 bScheduleNow 为 TRUE,此方法会创建一个内部情节提要、创建和应用转换并计划动画。 如果 bScheduleNow 为 FALSE,则需要调用 Schedule 在指定时间启动动画。
将转换应用于动画对象。
void ApplyTransitions();
如果尚未创建情节提要,则此方法在调试模式下 ASSERTS。 它首先创建所有转换,然后添加“静态”关键帧(依赖于偏移的关键帧),添加不依赖于关键帧的转换,根据转换和其他关键帧添加关键帧,最后添加依赖于关键帧的转换。
构造动画组。
CAnimationGroup(CAnimationController* pParentController, UINT32 nGroupID);
pParentController
指向创建组的动画控制器的指针。
nGroupID
指定 GroupID。
创建 COM 转换对象的帮助程序。
BOOL CreateTransitions();
如果方法成功,则为 TRUE;否则为 FALSE。
查找包含指定动画变量的动画对象。
CAnimationBaseObject* FindAnimationObject(IUIAnimationVariable* pVariable);
pVariable
指向动画变量的指针。
指向动画对象的指针,如果未找到动画对象,则为 NULL。
返回 GroupID。
UINT32 GetGroupID() const;
组标识符。
指定如何清除属于组的动画对象的转换。 如果此成员为 TRUE,则在计划动画时会自动删除转换。 否则,需要手动删除转换。
BOOL m_bAutoclearTransitions;
指定如何销毁动画对象。 如果此参数为 TRUE,动画对象将在组被销毁时自动销毁。 否则必须手动销毁动画对象。 默认值是 FALSE。 仅当属于组的所有动画对象都使用运算符 new 动态分配时,才将此值设置为 TRUE。
BOOL m_bAutodestroyAnimationObjects;
指定如何销毁关键帧。 如果该值为 TRUE,则所有关键帧都被移除并销毁;否则它们仅从列表中删除。 默认值为 TRUE。
BOOL m_bAutodestroyKeyframes;
包含动画对象的列表。
CObList m_lstAnimationObjects;
包含关键帧列表。
CObList m_lstKeyFrames;
动画组的唯一标识符。
UINT32 m_nGroupID;
指向该组所属的动画控制器的指针。
CAnimationController* m_pParentController;
指向动画情节提要。 此指针仅在调用 Animate 后有效。
ATL::CComPtr<IUIAnimationStoryboard> m_pStoryboard;
移除并选择性销毁属于动画组的所有关键帧。
void RemoveKeyframes();
如果 m_bAutodestroyKeyframes 成员为 TRUE,则移除并销毁关键帧,否则仅从关键帧的内部列表中移除关键帧。
从属于动画组的动画对象中移除转换。
void RemoveTransitions();
如果 m_bAutoclearTransitions 标志设置为 TRUE,此方法将遍历属于该组的所有动画对象并调用 CAnimationObject::ClearTransitions(FALSE)。
在指定时间计划动画。
BOOL Schedule(IUIAnimationTimer* pTimer, UI_ANIMATION_SECONDS time);
pTimer
指向动画计时器的指针。
time
指定计划动画的时间。
如果方法成功,则为 TRUE;如果方法失败或未在 bScheduleNow 设置为 FALSE 的情况下调用 Animate,则为 FALSE。
调用此函数以在指定时间计划动画。 必须首先在 bScheduleNow 设置为 FALSE 的情况下调用 Animate。
指示属于组的所有动画对象自动销毁转换。
void SetAutodestroyTransitions(BOOL bAutoDestroy = TRUE);
bAutoDestroy
指定如何销毁转换。
仅当在堆栈上分配转换时,才将此值设置为 FALSE。 默认值为 TRUE,因此强烈建议使用运算符 new 分配转换对象。