CAnimationController 类

实现动画控制器,它为创建和管理动画提供了中央接口。

语法

class CAnimationController : public CObject;

成员

公共构造函数

名称 描述
CAnimationController::CAnimationController 构造动画控制器。
CAnimationController::~CAnimationController 析构函数。 销毁动画控制器对象时调用。

公共方法

名称 描述
CAnimationController::AddAnimationObject 将动画对象添加到属于动画控制器的组。
CAnimationController::AddKeyframeToGroup 将关键帧添加到组。
CAnimationController::AnimateGroup 准备一个组以运行动画并选择性地计划该动画。
CAnimationController::CleanUpGroup 已重载。 计划动画后由框架调用以清理组。
CAnimationController::CreateKeyframe 已重载。 创建取决于过渡的关键帧并将其添加到指定的组。
CAnimationController::EnableAnimationManagerEvent 设置或释放一个在动画管理器状态更改时调用的处理程序。
CAnimationController::EnableAnimationTimerEventHandler 设置或释放计时事件处理程序和计时更新处理程序。
CAnimationController::EnablePriorityComparisonHandler 设置或释放优先级比较处理程序,调用该处理程序可确定是否能够取消、结束、剪裁或压缩计划的情节提要。
CAnimationController::EnableStoryboardEventHandler 设置或释放情节提要状态和更新事件的处理程序。
CAnimationController::FindAnimationGroup 已重载。 按情节提要查找动画组。
CAnimationController::FindAnimationObject 查找包含指定的动画变量的动画对象。
CAnimationController::GetKeyframeStoryboardStart 返回标识情节提要开头的关键帧。
CAnimationController::GetUIAnimationManager 提供对封装的 IUIAnimationManager 对象的访问。
CAnimationController::GetUIAnimationTimer 提供对封装的 IUIAnimationTimer 对象的访问。
CAnimationController::GetUITransitionFactory 指向 IUIAnimationTransitionFactory 接口的指针,如果创建过渡库失败,则为 NULL。
CAnimationController::GetUITransitionLibrary 提供对封装的 IUIAnimationTransitionLibrary 对象的访问。
CAnimationController::IsAnimationInProgress 告知是否至少有一组正在播放动画。
CAnimationController::IsValid 告知动画控制器是否有效。
CAnimationController::OnAnimationIntegerValueChanged 当动画变量的整数值更改时由框架调用。
CAnimationController::OnAnimationManagerStatusChanged 由框架调用以响应来自动画管理器的 StatusChanged 事件。
CAnimationController::OnAnimationTimerPostUpdate 动画更新完成后由框架调用。
CAnimationController::OnAnimationTimerPreUpdate 在动画更新开始之前由框架调用。
CAnimationController::OnAnimationTimerRenderingTooSlow 当动画的渲染帧速率低于最小所需帧速率时由框架调用。
CAnimationController::OnAnimationValueChanged 当动画变量的值更改时由框架调用。
CAnimationController::OnBeforeAnimationStart 在计划动画之前由框架调用。
CAnimationController::OnHasPriorityCancel 由框架调用以便解决计划冲突。
CAnimationController::OnHasPriorityCompress 由框架调用以便解决计划冲突。
CAnimationController::OnHasPriorityConclude 由框架调用以便解决计划冲突。
CAnimationController::OnHasPriorityTrim 由框架调用以便解决计划冲突。
CAnimationController::OnStoryboardStatusChanged 当情节提要状态更改时由框架调用。
CAnimationController::OnStoryboardUpdated 情节提要更新后由框架调用。
CAnimationController::RemoveAllAnimationGroups 从动画控制器中删除所有动画组。
CAnimationController::RemoveAnimationGroup 从动画控制器中删除具有指定 ID 的动画组。
CAnimationController::RemoveAnimationObject 从动画控制器中移除动画对象。
CAnimationController::RemoveTransitions 从属于指定组的动画对象中删除过渡。
CAnimationController::ScheduleGroup 计划动画。
CAnimationController::SetRelatedWnd 在动画控制器与窗口之间建立关系。
CAnimationController::UpdateAnimationManager 指示动画管理器更新所有动画变量的值。

受保护方法

名称 描述
CAnimationController::CleanUpGroup 已重载。 用于清理组的帮助器。
CAnimationController::OnAfterSchedule 计划指定组的动画后立即由框架调用。

受保护的数据成员

名称 描述
CAnimationController::gkeyframeStoryboardStart 表示情节提要开头的关键帧。
CAnimationController::m_bIsValid 指定动画控制器是否有效。 如果当前操作系统不支持 Windows 动画 API,则此成员设置为 FALSE。
CAnimationController::m_lstAnimationGroups 属于此动画控制器的动画组列表。
CAnimationController::m_pAnimationManager 存储指向动画管理器 COM 对象的指针。
CAnimationController::m_pAnimationTimer 存储指向动画计时器 COM 对象的指针。
CAnimationController::m_pRelatedWnd 指向相关 CWnd 对象的指针,当动画管理器的状态发生更改或者发生更新后事件时,可以自动重绘该对象。 可以为 NULL。
CAnimationController::m_pTransitionFactory 存储指向过渡工厂 COM 对象的指针。
CAnimationController::m_pTransitionLibrary 存储指向过渡库 COM 对象的指针。

备注

CAnimationController 类是用于管理动画的关键类。 可以在应用程序中创建一个或多个动画控制器实例,并可以选择性地使用 CAnimationController::SetRelatedWnd 将动画控制器实例连接到 CWnd 对象。 当动画管理器状态更改或动画计时器更新时,需要通过此连接将 WM_PAINT 消息自动发送到相关窗口。 如果不启用此关系,则必须手动重绘一个显示动画的窗口。 为此,可以从 CAnimationController 派生一个类,重写 OnAnimationManagerStatusChanged 和/或 OnAnimationTimerPostUpdate 并在必要时使一个或多个窗口失效。

继承层次结构

CObject

CAnimationController

要求

标头: afxanimationcontroller.h

CAnimationController::~CAnimationController

析构函数。 销毁动画控制器对象时调用。

virtual ~CAnimationController(void);

CAnimationController::AddAnimationObject

将动画对象添加到属于动画控制器的组。

CAnimationGroup* AddAnimationObject(CAnimationBaseObject* pObject);

参数

pObject
指向动画对象的指针。

返回值

如果函数成功,则返回指向已添加 pObject 的现有或新动画组的指针;如果 pObject 已添加到属于另一个动画控制器的组,则返回 NULL。

备注

调用此方法可将动画对象添加到动画控制器。 对象将根据对象的 GroupID 添加到组(请参阅 CAnimationBaseObject::SetID)。 如果该对象是使用指定 GroupID 添加的第一个对象,则动画控制器将创建一个新组。 动画对象只能添加到一个动画控制器。 如果需要将对象添加到另一个控制器,请先调用 RemoveAnimationObject。 如果使用已添加到组中的对象的 GroupID 调用 SetID,则会从旧组中删除该对象,并将其添加到具有指定 ID 的另一个组。

CAnimationController::AddKeyframeToGroup

将关键帧添加到组。

BOOL AddKeyframeToGroup(
    UINT32 nGroupID,
    CBaseKeyFrame* pKeyframe);

参数

nGroupID
指定组 ID。

pKeyframe
指向关键帧的指针。

返回值

如果函数成功,则返回 TRUE;否则返回 FALSE。

注解

通常你不需要调用此方法,而可以使用 CAnimationController::CreateKeyframe,后者可自动创建关键帧并将其添加到组中。

CAnimationController::AnimateGroup

准备一个组以运行动画并选择性地计划该动画。

BOOL AnimateGroup(
    UINT32 nGroupID,
    BOOL bScheduleNow = TRUE);

参数

nGroupID
指定 GroupID。

bScheduleNow
指定是否立即运行动画。

返回值

如果动画已成功计划并运行,则返回 TRUE。

备注

此方法执行创建情节提要、添加动画变量、应用过渡和设置关键帧的实际工作。 如果将 bScheduleNow 设置为 FALSE,则可能会延迟计划。 在这种情况下,指定的组将包含一个已为动画设置的情节提要。 此时,可为情节提要和动画变量设置事件。 确实需要运行动画时,请调用 CAnimationController::ScheduleGroup。

CAnimationController::CAnimationController

构造动画控制器。

CAnimationController(void);

CAnimationController::CleanUpGroup

计划动画后由框架调用以清理组。

void CleanUpGroup(UINT32 nGroupID);
void CleanUpGroup(CAnimationGroup* pGroup);

参数

nGroupID
指定 GroupID。

pGroup
指向要清理的动画组的指针。

备注

此方法从指定的组中删除所有过渡和关键帧,因为它们在计划动画后不再相关。

CAnimationController::CreateKeyframe

创建取决于过渡的关键帧并将其添加到指定的组。

CKeyFrame* CreateKeyframe(
    UINT32 nGroupID,
    CBaseTransition* pTransition);

CKeyFrame* CreateKeyframe(
    UINT32 nGroupID,
    CBaseKeyFrame* pKeyframe,
    UI_ANIMATION_SECONDS offset = 0.0);

参数

nGroupID
指定要为其创建关键帧的组 ID。

pTransition
指向过渡的指针。 关键帧将插入到此过渡后的情节提要。

pKeyframe
指向此关键帧的基关键帧的指针。

offset
由 pKeyframe 指定的基关键帧的偏移量(以秒为单位)。

返回值

指向新创建的关键帧(如果函数成功)的指针。

注解

可以存储返回的指针,也可以在新创建的关键帧的基础上创建其他关键帧(请参阅第二个重载)。 可以在关键帧处开始过渡 - 请参阅 CBaseTransition::SetKeyframes。 不需要删除以这种方式创建的关键帧,因为动画组会自动删除它们。 基于其他关键帧和过渡创建关键帧时请小心,避免循环引用。

CAnimationController::EnableAnimationManagerEvent

设置或释放一个在动画管理器状态更改时调用的处理程序。

virtual BOOL EnableAnimationManagerEvent(BOOL bEnable = TRUE);

参数

bEnable
指定是否设置或释放处理程序。

返回值

如果已成功设置或释放处理程序,则返回 TRUE。

注解

设置(启用)处理程序后,当动画管理器的状态更改时,Windows 动画会调用 OnAnimationManagerStatusChanged。

CAnimationController::EnableAnimationTimerEventHandler

设置或释放计时事件处理程序和计时更新处理程序。

virtual BOOL EnableAnimationTimerEventHandler(
    BOOL bEnable = TRUE,
    UI_ANIMATION_IDLE_BEHAVIOR idleBehavior = UI_ANIMATION_IDLE_BEHAVIOR_DISABLE);

参数

bEnable
指定是否设置或释放处理程序。

idleBehavior
指定计时器更新处理程序的空闲行为。

返回值

如果已成功设置或释放处理程序,则返回 TRUE;如果在未首先释放处理程序的情况下再次调用此方法,或者发生任何其他错误,则返回 FALSE。

备注

设置(启用)处理程序后,Windows 动画 API 会调用 OnAnimationTimerPreUpdate、OnAnimationTimerPostUpdate、OnRenderingTooSlow 方法。 需要启用动画计时器,使 Windows 动画 API 能够更新情节提要。 否则,需要调用 CAnimationController::UpdateAnimationManager 以指示动画管理器更新所有动画变量的值。

CAnimationController::EnablePriorityComparisonHandler

设置或释放优先级比较处理程序,调用该处理程序可确定是否能够取消、结束、剪裁或压缩计划的情节提要。

virtual BOOL EnablePriorityComparisonHandler(DWORD dwHandlerType);

参数

dwHandlerType
UI_ANIMATION_PHT_ 标志的组合(参阅“注解”),用于指定要设置或释放的处理程序。

返回值

如果已成功设置或释放处理程序,则返回 TRUE。

备注

设置(启用)处理程序后,Windows 动画会根据 dwHandlerType 调用以下虚拟方法:OnHasPriorityCancel、OnHasPriorityConclude、OnHasPriorityTrim、OnHasPriorityCompress。 dwHandler 可为以下标志的组合:UI_ANIMATION_PHT_NONE - 释放所有处理程序 UI_ANIMATION_PHT_CANCEL - 设置取消比较处理程序 UI_ANIMATION_PHT_CONCLUDE - 设置结束比较处理程序 UI_ANIMATION_PHT_COMPRESS - 设置压缩比较处理程序 UI_ANIMATION_PHT_TRIM - 设置剪裁比较处理程序 UI_ANIMATION_PHT_CANCEL_REMOVE - 删除取消比较处理程序 UI_ANIMATION_CONCLUDE_REMOVE - 删除结束比较处理程序 UI_ANIMATION_PHT_COMPRESS_REMOVE - 删除压缩比较处理程序 UI_ANIMATION_PHT_TRIM_REMOVE - 删除剪裁比较处理程序

CAnimationController::EnableStoryboardEventHandler

设置或释放情节提要状态和更新事件的处理程序。

virtual BOOL EnableStoryboardEventHandler(
    UINT32 nGroupID,
    BOOL bEnable = TRUE);

参数

nGroupID
指定组 ID。

bEnable
指定是否设置或释放处理程序。

返回值

如果已成功设置或释放处理程序,则返回 TRUE;如果现已找到指定的动画组,或者指定的组的动画尚未启动且其内部情节提要为 NULL,则返回 FALSE。

备注

设置(启用)处理程序后,Windows 动画 API 会调用 OnStoryboardStatusChanges 和 OnStoryboardUpdated 虚拟方法。 对指定的动画组调用 CAnimationController::Animate 之后必须设置一个处理程序,因为它会创建封装的 IUIAnimationStoryboard 对象。

CAnimationController::FindAnimationGroup

按组 ID 查找动画组。

CAnimationGroup* FindAnimationGroup(UINT32 nGroupID);
CAnimationGroup* FindAnimationGroup(IUIAnimationStoryboard* pStoryboard);

参数

nGroupID
指定 GroupID。

pStoryboard
指向情节提要的指针。

返回值

返回指向动画组的指针;如果找不到具有指定 ID 的组,则返回 NULL。

注解

使用此方法可在运行时查找动画组。 将具有特定 GroupID 的第一个动画对象被添加到动画控制器时,会创建一个组并将其添加到动画组的内部列表中。

CAnimationController::FindAnimationObject

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

BOOL FindAnimationObject(
    IUIAnimationVariable* pVariable,
    CAnimationBaseObject** ppObject,
    CAnimationGroup** ppGroup);

参数

pVariable
指向动画变量的指针。

ppObject
输出。 包含指向动画对象的指针,或 NULL。

ppGroup
输出。 包含指向保存动画对象的动画组的指针,或 NULL。

返回值

如果找到对象,则返回 TRUE;否则返回 FALSE。

注解

需要从传入的动画变量查找动画对象时,从事件处理程序调用。

CAnimationController::gkeyframeStoryboardStart

表示情节提要开头的关键帧。

static CBaseKeyFrame gkeyframeStoryboardStart;

CAnimationController::GetKeyframeStoryboardStart

返回标识情节提要开头的关键帧。

static CBaseKeyFrame* GetKeyframeStoryboardStart();

返回值

指向用于标识情节提要开头的基本关键帧的指针。

备注

获取此关键帧可以基于情节提要开头的那一刻创建其他关键帧或过渡。

CAnimationController::GetUIAnimationManager

提供对封装的 IUIAnimationManager 对象的访问。

IUIAnimationManager* GetUIAnimationManager();

返回值

返回指向 IUIAnimationManager 接口的指针;如果创建动画管理器失败,则返回 NULL。

备注

如果当前操作系统不支持 Windows 动画 API,则此方法将返回 NULL,然后,对 CAnimationController::IsValid 的所有后续调用都会返回 FALSE。 可能需要访问 IUIAnimationManager 才能调用其接口方法,动画控制器不会包装这些方法。

CAnimationController::GetUIAnimationTimer

提供对封装的 IUIAnimationTimer 对象的访问。

IUIAnimationTimer* GetUIAnimationTimer();

返回值

返回指向 IUIAnimationTimer 接口的指针;如果创建动画计时器失败,则返回 NULL。

注解

如果当前操作系统不支持 Windows 动画 API,则此方法将返回 NULL,然后,对 CAnimationController::IsValid 的所有后续调用都会返回 FALSE。

CAnimationController::GetUITransitionFactory

指向 IUIAnimationTransitionFactory 接口的指针,如果创建过渡库失败,则为 NULL。

IUIAnimationTransitionFactory* GetUITransitionFactory();

返回值

返回指向 IUIAnimationTransitionFactory 的指针,如果创建过渡工厂失败,则返回 NULL。

注解

如果当前操作系统不支持 Windows 动画 API,则此方法将返回 NULL,然后,对 CAnimationController::IsValid 的所有后续调用都会返回 FALSE。

CAnimationController::GetUITransitionLibrary

提供对封装的 IUIAnimationTransitionLibrary 对象的访问。

IUIAnimationTransitionLibrary* GetUITransitionLibrary();

返回值

返回指向 IUIAnimationTransitionLibrary 接口的指针,如果创建过渡库失败,则返回 NULL。

注解

如果当前操作系统不支持 Windows 动画 API,则此方法将返回 NULL,然后,对 CAnimationController::IsValid 的所有后续调用都会返回 FALSE。

CAnimationController::IsAnimationInProgress

告知是否至少有一组正在播放动画。

virtual BOOL IsAnimationInProgress();

返回值

如果正在为此动画控制器运行动画,则返回 TRUE;否则返回 FALSE。

注解

检查动画管理器的状态,如果状态为 UI_ANIMATION_MANAGER_BUSY,则返回 TRUE。

CAnimationController::IsValid

告知动画控制器是否有效。

BOOL IsValid() const;

返回值

如果动画控制器有效,则返回 TRUE;否则返回 FALSE。

备注

仅当当前操作系统不支持 Windows 动画 API 并且创建动画管理器因未注册而失败时,此方法才返回 FALSE。 在初始化 COM 库之后,至少需要调用 GetUIAnimationManager 一次以设置此标志。

CAnimationController::m_bIsValid

指定动画控制器是否有效。 如果当前操作系统不支持 Windows 动画 API,则此成员设置为 FALSE。

BOOL m_bIsValid;

CAnimationController::m_lstAnimationGroups

属于此动画控制器的动画组列表。

CList<CAnimationGroup*, CAnimationGroup*> m_lstAnimationGroups;

CAnimationController::m_pAnimationManager

存储指向动画管理器 COM 对象的指针。

ATL::CComPtr<IUIAnimationManager> m_pAnimationManager;

CAnimationController::m_pAnimationTimer

存储指向动画计时器 COM 对象的指针。

ATL::CComPtr<IUIAnimationTimer> m_pAnimationTimer;

CAnimationController::m_pRelatedWnd

指向相关 CWnd 对象的指针,当动画管理器的状态发生更改或者发生更新后事件时,可以自动重绘该对象。 可以为 NULL。

CWnd* m_pRelatedWnd;

CAnimationController::m_pTransitionFactory

存储指向过渡工厂 COM 对象的指针。

ATL::CComPtr<IUIAnimationTransitionFactory> m_pTransitionFactory;

CAnimationController::m_pTransitionLibrary

存储指向过渡库 COM 对象的指针。

ATL::CComPtr<IUIAnimationTransitionLibrary> m_pTransitionLibrary;

CAnimationController::OnAfterSchedule

计划指定组的动画后立即由框架调用。

virtual void OnAfterSchedule(CAnimationGroup* pGroup);

参数

pGroup
指向已计划的动画组的指针。

备注

默认实现将从指定的组中删除关键帧,并从属于指定组的动画变量中删除过渡。 可以在派生类中重写,以根据动画计划采取任何其他操作。

CAnimationController::OnAnimationIntegerValueChanged

当动画变量的整数值更改时由框架调用。

virtual void OnAnimationIntegerValueChanged(
    CAnimationGroup* pGroup,
    CAnimationBaseObject* pObject,
    IUIAnimationVariable* variable,
    INT32 newValue,
    INT32 prevValue);

参数

pGroup
指向动画组的指针,该动画组包含值已更改的动画对象。

pObject
指向动画对象的指针,该对象包含值已更改的动画变量。

variable
指向动画变量的指针。

newValue
指定新值。

prevValue
指定旧值。

备注

如果使用针对特定动画变量或动画对象调用的 EnableIntegerValueChangedEvent 来启用动画变量事件,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。

CAnimationController::OnAnimationManagerStatusChanged

由框架调用以响应来自动画管理器的 StatusChanged 事件。

virtual void OnAnimationManagerStatusChanged(
    UI_ANIMATION_MANAGER_STATUS newStatus,
    UI_ANIMATION_MANAGER_STATUS previousStatus);

参数

newStatus
新的动画管理器状态。

previousStatus
旧的动画管理器状态。

备注

如果使用 EnableAnimationManagerEvent 启用动画管理器事件,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。 如果已使用 SetRelatedWnd 设置相关窗口,则默认实现会更新该窗口。

CAnimationController::OnAnimationTimerPostUpdate

动画更新完成后由框架调用。

virtual void OnAnimationTimerPostUpdate();

备注

如果使用 EnableAnimationTimerEventHandler 启用计时器事件处理程序,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。

CAnimationController::OnAnimationTimerPreUpdate

在动画更新开始之前由框架调用。

virtual void OnAnimationTimerPreUpdate();

备注

如果使用 EnableAnimationTimerEventHandler 启用计时器事件处理程序,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。

CAnimationController::OnAnimationTimerRenderingTooSlow

当动画的渲染帧速率低于最小所需帧速率时由框架调用。

virtual void OnAnimationTimerRenderingTooSlow(UINT32 fps);

参数

fps
当前帧速率,以每秒帧数表示。

备注

如果使用 EnableAnimationTimerEventHandler 启用计时器事件处理程序,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。 通过调用 IUIAnimationTimer::SetFrameRateThreshold 来指定最小所需帧速率。

CAnimationController::OnAnimationValueChanged

当动画变量的值更改时由框架调用。

virtual void OnAnimationValueChanged(
    CAnimationGroup* pGroup,
    CAnimationBaseObject* pObject,
    IUIAnimationVariable* variable,
    DOUBLE newValue,
    DOUBLE prevValue);

参数

pGroup
指向动画组的指针,该动画组包含值已更改的动画对象。

pObject
指向动画对象的指针,该对象包含值已更改的动画变量。

variable
指向动画变量的指针。

newValue
指定新值。

prevValue
指定旧值。

注解

如果使用针对特定动画变量或动画对象调用的 EnableValueChangedEvent 来启用动画变量事件,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。

CAnimationController::OnBeforeAnimationStart

在计划动画之前由框架调用。

virtual void OnBeforeAnimationStart(CAnimationGroup* pGroup);

参数

pGroup
指向动画即将开始的动画组的指针。

备注

此调用将路由到相关 CWnd,并可以在派生类中重写,以在指定的组的动画开始之前执行任何其他操作。

CAnimationController::OnHasPriorityCancel

由框架调用以便解决计划冲突。

virtual BOOL OnHasPriorityCancel(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

参数

pGroupScheduled
拥有当前已计划的情节提要的组。

pGroupNew
拥有计划中的新情节提要的组与 pGroupScheduled 所拥有的已计划的情节提要发生冲突。

priorityEffect
如果 pGroupScheduled 具有更高的优先级,则对 pGroupNew 会有潜在影响。

返回值

如果 pGroupNew 所拥有的情节提要具有优先级,则应返回 TURE。 如果 pGroupScheduled 所拥有的情节提要具有优先级,则应返回 FALSE。

备注

如果你使用 CAnimationController::EnablePriorityComparisonHandler 启用优先级比较事件,并指定 UI_ANIMATION_PHT_CANCEL,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。 有关冲突管理的详细信息,请阅读 Windows 动画 API 文档。

CAnimationController::OnHasPriorityCompress

由框架调用以便解决计划冲突。

virtual BOOL OnHasPriorityCompress(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

参数

pGroupScheduled
拥有当前已计划的情节提要的组。

pGroupNew
拥有计划中的新情节提要的组与 pGroupScheduled 所拥有的已计划的情节提要发生冲突。

priorityEffect
如果 pGroupScheduled 具有更高的优先级,则对 pGroupNew 会有潜在影响。

返回值

如果 pGroupNew 所拥有的情节提要具有优先级,则应返回 TURE。 如果 pGroupScheduled 所拥有的情节提要具有优先级,则应返回 FALSE。

备注

如果你使用 CAnimationController::EnablePriorityComparisonHandler 启用优先级比较事件,并指定 UI_ANIMATION_PHT_COMPRESS,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。 有关冲突管理的详细信息,请阅读 Windows 动画 API 文档。

CAnimationController::OnHasPriorityConclude

由框架调用以便解决计划冲突。

virtual BOOL OnHasPriorityConclude(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

参数

pGroupScheduled
拥有当前已计划的情节提要的组。

pGroupNew
拥有计划中的新情节提要的组与 pGroupScheduled 所拥有的已计划的情节提要发生冲突。

priorityEffect
如果 pGroupScheduled 具有更高的优先级,则对 pGroupNew 会有潜在影响。

返回值

如果 pGroupNew 所拥有的情节提要具有优先级,则应返回 TURE。 如果 pGroupScheduled 所拥有的情节提要具有优先级,则应返回 FALSE。

备注

如果你使用 CAnimationController::EnablePriorityComparisonHandler 启用优先级比较事件,并指定 UI_ANIMATION_PHT_CONCLUDE,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。 有关冲突管理的详细信息,请阅读 Windows 动画 API 文档。

CAnimationController::OnHasPriorityTrim

由框架调用以便解决计划冲突。

virtual BOOL OnHasPriorityTrim(
    CAnimationGroup* pGroupScheduled,
    CAnimationGroup* pGroupNew,
    UI_ANIMATION_PRIORITY_EFFECT priorityEffect);

参数

pGroupScheduled
拥有当前已计划的情节提要的组。

pGroupNew
拥有计划中的新情节提要的组与 pGroupScheduled 所拥有的已计划的情节提要发生冲突。

priorityEffect
如果 pGroupScheduled 具有更高的优先级,则对 pGroupNew 会有潜在影响。

返回值

如果 pGroupNew 所拥有的情节提要具有优先级,则应返回 TURE。 如果 pGroupScheduled 所拥有的情节提要具有优先级,则应返回 FALSE。

备注

如果你使用 CAnimationController::EnablePriorityComparisonHandler 启用优先级比较事件,并指定 UI_ANIMATION_PHT_TRIM,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。 有关冲突管理的详细信息,请阅读 Windows 动画 API 文档。

CAnimationController::OnStoryboardStatusChanged

当情节提要状态更改时由框架调用。

virtual void OnStoryboardStatusChanged(
    CAnimationGroup* pGroup,
    UI_ANIMATION_STORYBOARD_STATUS newStatus,
    UI_ANIMATION_STORYBOARD_STATUS previousStatus);

参数

pGroup
指向状态已更改的情节提要所属的动画组的指针。

newStatus
指定新状态。

previousStatus
指定旧状态。

备注

如果使用 CAnimationController::EnableStoryboardEventHandler 启用情节提要事件,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。

CAnimationController::OnStoryboardUpdated

情节提要更新后由框架调用。

virtual void OnStoryboardUpdated(CAnimationGroup* pGroup);

参数

pGroup
指向情节提要所属的组的指针。

备注

如果使用 CAnimationController::EnableStoryboardEventHandler 启用情节提要事件,则会调用此方法。 它可以在派生类中重写以便执行特定于应用程序的操作。

CAnimationController::RemoveAllAnimationGroups

从动画控制器中删除所有动画组。

void RemoveAllAnimationGroups();

备注

将删除所有组,如果其指针存储在应用程序级别,则必须使该指针失效。 如果要删除组的 CAnimationGroup::m_bAutodestroyAnimationObjects 为 TRUE,则属于该组的所有动画对象都将被删除;否则它们对父动画控制器的引用将设置为 NULL,并且可将它们添加到另一个控制器。

CAnimationController::RemoveAnimationGroup

从动画控制器中删除具有指定 ID 的动画组。

void RemoveAnimationGroup(UINT32 nGroupID);

参数

nGroupID
指定动画组 ID。

备注

此方法从组的内部列表中移除一个动画组并将其删除,因此如果存储了指向该动画组的指针,则必须使该指针失效。 如果 CAnimationGroup::m_bAutodestroyAnimationObjects 为 TRUE,则属于该组的所有动画对象都将被删除;否则它们对父动画控制器的引用将设置为 NULL,并且可将它们添加到另一个控制器。

CAnimationController::RemoveAnimationObject

从动画控制器中移除动画对象。

void RemoveAnimationObject(
    CAnimationBaseObject* pObject,
    BOOL bNoDelete = FALSE);

参数

pObject
指向动画对象的指针。

bNoDelete
如果此参数为 TRUE,则在移除对象时不会将其删除。

备注

从动画控制器和动画组中移除一个动画对象。 如果不再动画处理某个特定对象,或者需要将该对象移到另一个动画控制器,请调用此函数。 在最后一种情况下,bNoDelete 必须为 TRUE。

CAnimationController::RemoveTransitions

从属于指定组的动画对象中删除过渡。

void RemoveTransitions(UINT32 nGroupID);

参数

nGroupID
指定组 ID。

注解

该组循环访问其动画对象并对每个动画对象调用 ClearTransitions(FALSE)。 此方法在计划动画后由框架调用。

CAnimationController::ScheduleGroup

计划动画。

BOOL ScheduleGroup(
    UINT32 nGroupID,
    UI_ANIMATION_SECONDS time = 0.0);

参数

nGroupID
指定要计划的动画组 ID。

time
指定计划时间。

返回值

如果成功计划动画,则返回 TRUE。 如果未创建情节提要或发生其他错误,则返回 FALSE。

注解

必须在调用 ScheduleGroup 之前,在将参数 bScheduleNow 设置为 FALSE 的情况下调用 AnimateGroup。 可以指定通过 IUIAnimationTimer::GetTime 获取的所需动画时间。 如果 time 参数为 0.0,则动画将计划为当前时间。

CAnimationController::SetRelatedWnd

在动画控制器与窗口之间建立关系。

void SetRelatedWnd(CWnd* pWnd);

参数

pWnd
指向要设置的窗口对象的指针。

备注

如果设置了相关 CWnd 对象,则动画控制器可以在动画管理器的状态发生更改或发生计时器更新后事件时自动更新该对象(发送 WM_PAINT 消息)。

CAnimationController::UpdateAnimationManager

指示动画管理器更新所有动画变量的值。

virtual void UpdateAnimationManager();

备注

调用此方法可将动画管理器推进到当前时间,根据需要更改情节提要的状态,并将任何动画变量更新为相应的内插值。 此方法在内部调用 IUIAnimationTimer::GetTime(timeNow) 和 IUIAnimationManager::Update(timeNow)。 重写派生类中的此方法以自定义此行为。

另请参阅