Класс 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 и сделать недействительными одно или несколько окон при необходимости.
Иерархия наследования
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). Переопределите этот метод в производном классе, чтобы настроить это поведение.