Класс 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 Удаляет группу анимации с указанным идентификатором из контроллера анимации.
CAnimationController::RemoveAnimationObject Удалите объект анимации из контроллера анимации.
CAnimationController::RemoveTransitions Удаляет переходы из объектов анимации, принадлежащих указанной группе.
CAnimationController::ScheduleGroup Планирует анимацию.
CAnimationController::SetRelatedWnd Устанавливает связь между контроллером анимации и окном.
CAnimationController::UpdateAnimationManager Направляет диспетчер анимации для обновления значений всех переменных анимации.

Защищенные методы

Имя Описание
CAnimationController::CleanUpGroup Перегружен. Вспомогательный элемент, который очищает группу.
CAnimationController::OnAfterSchedule Вызывается платформой, когда только что запланирована анимация для указанной группы.

Защищенные члены данных

Имя Описание
CAnimationController::gkeyframeStoryboardStart Ключевой кадр, представляющий начало раскадровки.
CAnimationController::m_bIsValid Указывает, является ли контроллер анимации допустимым или нет. Этот элемент имеет значение FALSE, если текущая ОС не поддерживает API анимации Windows.
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 — это ключевой класс, который управляет анимациями. Вы можете создать один или несколько экземпляров контроллера анимации в приложении и, при необходимости, подключить экземпляр контроллера анимации к объекту CWnd с помощью CAnimationController::SetRelatedWnd. Это подключение требуется для отправки WM_PAINT сообщений в связанное окно автоматически при изменении состояния диспетчера анимации или обновлении таймера анимации. Если эта связь не включена, необходимо перераскрыть окно, отображающее анимацию вручную. Для этого можно наследовать класс из CAnimationController и переопределить OnAnimationManagerStatusChanged и/или OnAnimationTimerPostUpdate и сделать недействительными одно или несколько окон при необходимости.

Иерархия наследования

CObject

CAnimationController

Требования

Заголовок: afxanimationcontroller.h

CAnimationController::~CAnimationController

Деструктор Вызывается при уничтожении объекта контроллера анимации.

virtual ~CAnimationController(void);

CAnimationController::AddAnimationObject

Добавляет объект анимации в группу, которая принадлежит контроллеру анимации.

CAnimationGroup* AddAnimationObject(CAnimationBaseObject* pObject);

Параметры

pObject
Указатель на объект анимации.

Возвращаемое значение

Указатель на существующую или новую группу анимации, в которой добавлен pObject, если функция выполнена успешно; Значение NULL, если pObject уже добавлен в группу, которая принадлежит другому контроллеру анимации.

Замечания

Вызовите этот метод, чтобы добавить объект анимации в контроллер анимации. Объект будет добавлен в группу в соответствии с groupID объекта (см. раздел CAnimationBaseObject::SetID). Контроллер анимации создаст новую группу, если это первый объект, добавляемый с указанным идентификатором GroupID. Объект анимации можно добавить только к одному контроллеру анимации. Если необходимо добавить объект к другому контроллеру, сначала вызовите RemoveAnimationObject. При вызове SetID с новым идентификатором GroupID для объекта, который уже добавлен в группу, объект будет удален из старой группы и добавлен в другую группу с указанным идентификатором.

CAnimationController::AddKeyframeToGroup

Добавляет ключевой кадр в группу.

BOOL AddKeyframeToGroup(
    UINT32 nGroupID,
    CBaseKeyFrame* pKeyframe);

Параметры

nGroupID
Указывает идентификатор группы.

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
Задает идентификатор группы, для которой создается опорный кадр.

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, если этот метод вызывается во второй раз, не освобождая обработчиков первым или если возникает другая ошибка.

Замечания

Если обработчики заданы (включено) API анимации Windows вызывает методы OnAnimationTimerPreUpdate, OnAnimationTimerPostUpdate, OnRenderingTooSlow. Необходимо включить таймеры анимации, чтобы разрешить api анимации обновления раскадровок API анимации Windows. В противном случае необходимо вызвать 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_TRIM - установка обработчика сравнения Trim UI_ANIMATION_PHT_CANCEL_REMOVE - удаление обработчика сравнения отмены UI_ANIMATION_PHT_CONCLUDE_REMOVE - удаление обработчика сравнения "Завершение" UI_ANIMATION_PHT_COMPRESS_REMOVE - Удаление обработчика сравнения сжатия UI_ANIMATION_PHT_TRIM_REMOVE — удаление обработчика сравнения trim

CAnimationController::EnableStoryboardEventHandler

Задает или освобождает обработчик для состояния раскадровки и событий обновления.

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

Параметры

nGroupID
Указывает идентификатор группы.

bEnable
Указывает, следует ли задать или освободить обработчик.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если обработчик был успешно установлен или освобожден; ЗНАЧЕНИЕ FALSE, если указанная группа анимации найдена или анимация для указанной группы не была инициирована, а ее внутренняя раскадровка имеет значение NULL.

Замечания

Если обработчик установлен (включено) API анимации Windows вызывает виртуальные методы OnStoryboardStatusChanges и OnStoryboardUpdated. Обработчик должен быть задан после вызова CAnimationController::Animate для указанной группы анимации, так как он создает инкапсулированный объект IUIAnimationStoryboard.

CAnimationController::FindAnimationGroup

Находит группу анимации по идентификатору группы.

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

Параметры

nGroupID
Задает идентификатор groupID.

pStoryboard
Указатель на раскадровку.

Возвращаемое значение

Указатель на группу анимации или ЗНАЧЕНИЕ 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, если не удалось создать диспетчер анимации.

Замечания

Если текущая ОС не поддерживает API анимации Windows, этот метод возвращает значение NULL и после этого все последующие вызовы cAnimationController::IsValid возвращают FALSE. Для вызова методов интерфейса, которые не упаковываются контроллером анимации, может потребоваться доступ к IUIAnimationManager.

CAnimationController::GetUIAnimationTimer

Предоставляет доступ к инкапсулированному объекту IUIAnimationTimer.

IUIAnimationTimer* GetUIAnimationTimer();

Возвращаемое значение

Указатель на интерфейс IUIAnimationTimer или NULL, если не удалось создать таймер анимации.

Замечания

Если текущая ОС не поддерживает API анимации Windows, этот метод возвращает значение NULL и после этого все последующие вызовы cAnimationController::IsValid возвращают FALSE.

CAnimationController::GetUITransitionFactory

Указатель на интерфейс IUIAnimationTransitionFactory или NULL, если не удалось создать библиотеку перехода.

IUIAnimationTransitionFactory* GetUITransitionFactory();

Возвращаемое значение

Указатель на IUIAnimationTransitionFactory или NULL, если не удалось создать фабрику перехода.

Замечания

Если текущая ОС не поддерживает API анимации Windows, этот метод возвращает значение NULL и после этого все последующие вызовы cAnimationController::IsValid возвращают FALSE.

CAnimationController::GetUITransitionLibrary

Предоставляет доступ к инкапсулированному объекту IUIAnimationTransitionLibrary.

IUIAnimationTransitionLibrary* GetUITransitionLibrary();

Возвращаемое значение

Указатель на интерфейс IUIAnimationTransitionLibrary или NULL, если не удалось создать библиотеку перехода.

Замечания

Если текущая ОС не поддерживает API анимации Windows, этот метод возвращает значение NULL и после этого все последующие вызовы cAnimationController::IsValid возвращают FALSE.

CAnimationController::IsAnimationInProgress

Указывает, играет ли по крайней мере одна группа анимации.

virtual BOOL IsAnimationInProgress();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если выполняется анимация для этого контроллера анимации; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Проверяет состояние диспетчера анимации и возвращает значение TRUE, если состояние UI_ANIMATION_MANAGER_BUSY.

CAnimationController::IsValid

Указывает, является ли контроллер анимации допустимым.

BOOL IsValid() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если контроллер анимации действителен; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод возвращает значение FALSE, только если API анимации Windows не поддерживается в текущей ОС и сбой создания диспетчера анимации, так как он не зарегистрирован. Необходимо вызвать GetUIAnimationManager по крайней мере один раз после инициализации библиотек COM, чтобы вызвать настройку этого флага.

CAnimationController::m_bIsValid

Указывает, является ли контроллер анимации допустимым или нет. Этот элемент имеет значение FALSE, если текущая ОС не поддерживает API анимации Windows.

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
Возможное действие на группу pGroupNew, если приоритет группы pGroupScheduled выше.

Возвращаемое значение

Должно возвращаться значение TRUE, если приоритет принадлежит раскадровке, входящей в группу pGroupNew. Должно возвращаться значение FALSE, если приоритет принадлежит раскадровке, входящей в группу pGroupScheduled.

Замечания

Этот метод вызывается, если задействовать события сравнения приоритета с помощью метода CAnimationController::EnablePriorityComparisonHandler и указать UI_ANIMATION_PHT_CANCEL. Для выполнения действий, характерных для конкретного приложения, его можно переопределить в производном классе. Дополнительные сведения об управлении конфликтами см. в документации по API анимации Windows.

CAnimationController::OnHasPriorityCompress

Вызывается платформой для решения конфликтов планирования.

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

Параметры

pGroupScheduled
Группа, в которую входит текущая запланированная раскадровка.

pGroupNew
Группа, в которую входит новая раскадровка, находящаяся в состоянии конфликта с запланированной раскадровкой, входящей в группу pGroupScheduled.

priorityEffect
Возможное действие на группу pGroupNew, если приоритет группы pGroupScheduled выше.

Возвращаемое значение

Должно возвращаться значение TRUE, если приоритет принадлежит раскадровке, входящей в группу pGroupNew. Должно возвращаться значение FALSE, если приоритет принадлежит раскадровке, входящей в группу pGroupScheduled.

Замечания

Этот метод вызывается, если задействовать события сравнения приоритета с помощью метода CAnimationController::EnablePriorityComparisonHandler и указать UI_ANIMATION_PHT_COMPRESS. Для выполнения действий, характерных для конкретного приложения, его можно переопределить в производном классе. Дополнительные сведения об управлении конфликтами см. в документации по API анимации Windows.

CAnimationController::OnHasPriorityConclude

Вызывается платформой для решения конфликтов планирования.

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

Параметры

pGroupScheduled
Группа, в которую входит текущая запланированная раскадровка.

pGroupNew
Группа, в которую входит новая раскадровка, находящаяся в состоянии конфликта с запланированной раскадровкой, входящей в группу pGroupScheduled.

priorityEffect
Возможное действие на группу pGroupNew, если приоритет группы pGroupScheduled выше.

Возвращаемое значение

Должно возвращаться значение TRUE, если приоритет принадлежит раскадровке, входящей в группу pGroupNew. Должно возвращаться значение FALSE, если приоритет принадлежит раскадровке, входящей в группу pGroupScheduled.

Замечания

Этот метод вызывается, если задействовать события сравнения приоритета с помощью метода CAnimationController::EnablePriorityComparisonHandler и указать UI_ANIMATION_PHT_CONCLUDE. Для выполнения действий, характерных для конкретного приложения, его можно переопределить в производном классе. Дополнительные сведения об управлении конфликтами см. в документации по API анимации Windows.

CAnimationController::OnHasPriorityTrim

Вызывается платформой для решения конфликтов планирования.

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

Параметры

pGroupScheduled
Группа, в которую входит текущая запланированная раскадровка.

pGroupNew
Группа, в которую входит новая раскадровка, находящаяся в состоянии конфликта с запланированной раскадровкой, входящей в группу pGroupScheduled.

priorityEffect
Возможное действие на группу pGroupNew, если приоритет группы pGroupScheduled выше.

Возвращаемое значение

Должно возвращаться значение TRUE, если приоритет принадлежит раскадровке, входящей в группу pGroupNew. Должно возвращаться значение FALSE, если приоритет принадлежит раскадровке, входящей в группу pGroupScheduled.

Замечания

Этот метод вызывается, если задействовать события сравнения приоритета с помощью метода CAnimationController::EnablePriorityComparisonHandler и указать UI_ANIMATION_PHT_TRIM. Для выполнения действий, характерных для конкретного приложения, его можно переопределить в производном классе. Дополнительные сведения об управлении конфликтами см. в документации по API анимации Windows.

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

Удаляет группу анимации с указанным идентификатором из контроллера анимации.

void RemoveAnimationGroup(UINT32 nGroupID);

Параметры

nGroupID
Указывает идентификатор группы анимации.

Замечания

Этот метод удаляет группу анимации из внутреннего списка групп и удаляет ее, поэтому при хранении указателя на эту группу анимации она должна быть недопустима. Если 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
Указывает идентификатор группы.

Замечания

Группа выполняет циклы по объектам анимации и вызывает ClearTransitions(FALSE) для каждого объекта анимации. Этот метод вызывается платформой после планирования анимации.

CAnimationController::ScheduleGroup

Планирует анимацию.

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

Параметры

nGroupID
Указывает идентификатор группы анимации для планирования.

time
Указывает время планирования.

Возвращаемое значение

Значение TRUE, если анимация успешно запланирована. FALSE, если раскадровка не создана, или возникает другая ошибка.

Замечания

Необходимо вызвать AnimateGroup с параметром bScheduleNow с значением FALSE до ScheduleGroup. Можно указать требуемое время анимации, полученное из IUIAnimationTimer::GetTime. Если параметр времени равен 0.0, анимация запланирована на текущее время.

CAnimationController::SetRelatedWnd

Устанавливает связь между контроллером анимации и окном.

void SetRelatedWnd(CWnd* pWnd);

Параметры

pWnd
Указатель на заданный объект окна.

Замечания

Если задан связанный объект CWnd, контроллер анимации может автоматически обновить его (отправить WM_PAINT сообщение) при изменении состояния диспетчера анимации или события после обновления таймера.

CAnimationController::UpdateAnimationManager

Направляет диспетчер анимации для обновления значений всех переменных анимации.

virtual void UpdateAnimationManager();

Замечания

Вызов этого метода перемещает диспетчер анимации в текущее время, изменяя состояния раскадровки по мере необходимости и обновляя все переменные анимации до соответствующих интерполированных значений. Внутри этого метода вызывается IUIAnimationTimer::GetTime(timeNow) и IUIAnimationManager::Update(timeNow). Переопределите этот метод в производном классе, чтобы настроить это поведение.

См. также

Классы