создание и выполнение режима анимации для графического пользовательского интерфейса
Классы МПК: | G06T13/00 Анимационные эффекты в двухмерных изображениях, например с использованием спрайтов, (элементов динамического графического отображения ) G06F3/14 вывод цифровых данных на индикаторные приборы |
Автор(ы): | КЭЛКИНС Мэтт (US), БЕДА Джозеф Стивен III (US), ГАЛЛО Кевин (US), ВОНГ Гилман К. (US), БЛАНКО Леонардо Эстебан (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2003-05-15 публикация патента:
20.06.2008 |
Изобретение относится к компонентам и подсистемам вычислительной системы для поддержания и обеспечения представлений графического пользовательского интерфейса. Изобретение обеспечивает более эффективное и гибкое выполнение режимов анимации в изображениях графического пользовательского интерфейса. Раскрыта система анимации графического изображения, поддерживающая изменение во времени значений свойств элементов изображения для элементов внутри графического изображения. Система анимации использует структуру изображения для поддержания набора элементов изображения. Элементы изображения включают в себя значение переменного свойства. Система анимации также использует систему свойств, поддерживающую свойства, связанные с элементами изображения, поддерживаемыми структурой изображения. Свойства включают в себя динамические свойства, которые могут изменяться во времени и, следовательно, воздействовать на представление соответствующего элемента на графическом изображении. Система анимации содержит классы анимации, из которых создаются экземпляры объектов анимации, связываемых со свойством элемента изображения во время выполнения. Экземпляры объекта анимации обеспечивают изменяемые во времени значения, которые воздействуют на значения, присваиваемые динамическим свойствам. 4 н. и 34 з.п. ф-лы, 7 ил.
Формула изобретения
1. Реализованная на компьютере система анимации графического изображения, поддерживающая изменение во времени значений свойств элементов изображения, содержащая:
структуру изображения для поддержания набора элементов изображения, в которой элемент изображения содержит значение переменного свойства, воздействующее на характеристику этого элемента изображения,
систему свойств для поддержания свойств, связанных с элементами изображения, поддерживаемыми структурой изображения, включая динамические свойства, которые могут изменяться во времени, и классы анимации, из которых создаются экземпляры объектов анимации, при этом экземпляры объектов анимации обеспечивают значения, изменяющиеся во времени, которые воздействуют на значения, присваиваемые динамическим свойствам,
при этом значения, изменяющиеся во времени, получаются посредством многократной подачи, в продолжение активного периода анимации, текущего времени и базового значения свойства в объекты анимации, при этом для инициирования объектов анимации классы анимации используют процесс, который принимает базовое значение свойства и возвращает значение, основывающееся на соответствующем определению внутреннего модификатора этого процесса вычислении значения хода выполнения.
2. Система анимации графического изображения по п.1, дополнительно содержащая:
динамический класс коллекции анимаций, который связывает один или большее количество объектов анимации с динамическим свойством элемента изображения внутри структуры изображения.
3. Система анимации графического изображения по п.1, дополнительно содержащая:
класс коллекции анимаций для группирования набора объектов класса анимации, причем экземпляр класса коллекции анимаций обеспечивает комбинированное выходное значение свойства посредством применения набора объектов класса анимации к базовому значению свойства.
4. Система анимации графического изображения по п.1, в которой каждый из классов анимации устанавливает внутреннюю временную шкалу.
5. Система анимации графического изображения по п.4, в которой экземпляры объекта анимации присоединены к родительской временной шкале, обеспечивающей контекст для последовательности временных характеристик, определенной внутренней временной шкалой.
6. Система анимации графического изображения по п.5, в которой родительская временная шкала устанавливается контейнером для экземпляров объекта анимации.
7. Система анимации графического изображения по п.1, в которой некоторые классы анимации из классов анимации связаны с конкретным типом данных, для которого они воспроизводят переменное во времени значение.
8. Система анимации графического изображения по п.7, в которой класс анимации из классов анимации обеспечивает значение с плавающей запятой.
9. Система анимации графического изображения по п.7, в которой класс анимации из классов анимации обеспечивает размеры для окна средства представления.
10. Система анимации графического изображения по п.7, в которой класс анимации из классов анимации обеспечивает верхнюю левую позицию прямоугольника.
11. Система анимации графического изображения по п.7, в которой класс анимации из классов анимации обеспечивает изменяющееся во времени значение цвета.
12. Система анимации графического изображения по п.7, в которой класс анимации из классов анимации обеспечивает булево значение.
13. Система анимации графического изображения по п.1, в которой процесс представляет собой метод GetValue.
14. Способ анимации элементов изображения в системе графического изображения, содержащей структуру изображения для поддержания набора соответствующих времени выполнения программы элементов изображения, сформированных выполняющейся программой, и систему свойств для управления свойствами, связанными с элементами изображения, при этом анимация некоторых элементов изображения из упомянутых элементов изображения достигается посредством изменения значений свойств элементов изображения в зависимости от прохождения времени, причем способ включает в себя этапы, на которых:
создают элемент графического изображения, содержащий изменяемое свойство,
определяют режим анимации, назначаемый изменяемому свойству,
связывают, в соответствии с запросами из программы во время выполнения, режим анимации с изменяемым свойством элемента изображения, и
обеспечивают последовательность изменяющихся во времени значений для изменяемого свойства в соответствии с режимом анимации, при этом обеспечение последовательности изменяющихся во времени значений включает в себя этапы, на которых
многократно подают, в продолжение активного периода анимации, текущее время и базовое значение свойства на реализующий режим анимации объект анимации, экземпляр которого создан из класса анимации, связанного с изменяемым свойством, для воспроизведения текущего значения для изменяемого свойства, при этом при упомянутой многократной подаче используют процесс, который принимает базовое значение свойства и возвращает значение, основывающееся на соответствующем определению внутреннего модификатора этого процесса вычислении значения хода выполнения, и
формируют обновленную компоновку элемента изображения в соответствии с текущим значением для изменяемого свойства.
15. Способ по п.14, дополнительно включающий в себя этап, на котором обеспечивают набор классов анимации, в котором каждый класс анимации определяет режим анимации.
16. Способ по п.15, в котором набор классов анимации задает тип анимации, при этом тип анимации соответствует типу данных, обрабатываемых экземплярами класса анимации.
17. Способ по п.14, в котором процесс представляет собой метод GetValue.
18. Способ по п.14, в котором этап определения режима анимации включает в себя этап, на котором группируют набор экземпляров класса анимации внутри класса коллекции анимаций, при этом экземпляр класса коллекции анимаций обеспечивает комбинированное выходное значение свойства посредством применения набора экземпляров класса анимации к базовому значению свойства.
19. Способ по п.14, в котором этап связывания включает в себя этап, на котором создают экземпляр класса динамической коллекции анимаций, который присоединяет один или большее количество объектов анимации к изменяемому свойству для элемента изображения.
20. Способ по п.14, в котором временные характеристики для хода последовательности изменяющихся во времени значений задают в соответствии с узлом дерева временных характеристик анимации, связанным с одним или большим количеством объектов анимации, определяющих режим анимации.
21. Способ по п.14, дополнительно включающий в себя этап, на котором присоединяют родительскую временную шкалу к объекту анимации, тем самым обеспечивая глобальный контекст временных характеристик анимации для локальной последовательности временных характеристик анимации, определяемой внутренней временной шкалой.
22. Способ по п.21, в котором родительская временная шкала объекта анимации установлена контейнером для коллекции экземпляров объекта анимации.
23. Реализуемый на компьютере способ реализации последовательных изменений значения свойства элемента изображения по ходу времени, включающий в себя этапы, на которых:
создают экземпляры объекта анимации из классов объекта анимации, задающих режимы анимации,
создают экземпляр объекта коллекции анимаций из класса коллекции анимаций, задающего список составляющих объектов анимации, и
создают экземпляр объекта динамической коллекции анимаций из класса коллекции анимаций, который связывает объект коллекции анимаций со свойством элемента изображения,
подают текущее времени и базовое значение свойства в составляющие объекты анимации объекта коллекции анимаций для воспроизведения текущего значения для свойства элемента изображения, при этом при упомянутой подаче используют процесс, который принимает базовое значение свойства и возвращает значение, основывающееся на соответствующем определению внутреннего модификатора этого процесса вычислении значения хода выполнения, и формируют обновленную компоновку элемента изображения в соответствии с текущим значением для свойства элемента изображения.
24. Способ по п.23, дополнительно включающий в себя этап, на котором назначают родительские временные шкалы экземплярам классов объекта анимации.
25. Способ по п.23, дополнительно включающий в себя этап, на котором блокируют свойства экземпляров объекта анимации.
26. Способ по п.23, дополнительно включающий в себя этап, на котором блокируют свойства экземпляров объекта коллекции анимаций.
27. Машиночитаемый носитель информации, содержащий машиноисполняемые команды, реализующие систему анимации графического изображения, поддерживающую изменения во времени значений свойств элементов изображения, причем система анимации графического изображения содержит:
структуру изображения для поддержания набора элементов изображения, в которой элемент изображения содержит значение переменного свойства, воздействующее на характеристику этого элемента изображения,
систему свойств для поддержания свойств, связанных с элементами изображения, поддерживаемыми структурой изображения, включая динамические свойства, которые могут изменяться во времени, и
классы анимации, из которых создаются экземпляры объектов анимации, при этом экземпляры объектов анимации обеспечивают значения, изменяющиеся во времени, которые воздействуют на значения, присваиваемые динамическим свойствам,
при этом значения, изменяющиеся во времени, получаются посредством многократной подачи, в продолжение активного периода анимации, текущего времени и базового значения свойства в объекты анимации, при этом для инициирования объектов анимации классы анимации используют процесс, который принимает базовое значение свойства и возвращает значение, основывающееся на соответствующем определению внутреннего модификатора этого процесса вычислении значения хода выполнения.
28. Машиночитаемый носитель информации по п.27, в котором система анимации графического изображения дополнительно содержит:
класс динамическое коллекции анимаций, который связывает один или большее количество объектов анимации с динамическим свойством элемента изображения внутри структуры изображения.
29. Машиночитаемый носитель информации по п.27, в котором система анимации графического изображения дополнительно содержит:
класс коллекции анимаций для группирования набора объектов класса анимации, причем экземпляр класса коллекции анимаций обеспечивает комбинированное выходное значение свойства посредством применения набора объектов класса анимации к базовому значению свойства.
30. Машиночитаемый носитель информации по п.27, в котором каждый из классов анимации устанавливает внутреннюю временную шкалу.
31. Машиночитаемый носитель информации по п.30, в котором экземпляры объектов анимации присоединены к родительской временной шкале, обеспечивающей контекст для последовательности временных характеристик анимации, определенной внутренней временной шкалой анимации.
32. Машиночитаемый носитель информации по п.31, в котором родительская временная шкала устанавливается контейнером для экземпляров объектов анимации.
33. Машиночитаемый носитель информации по п.27, в котором некоторые классы анимации из классов анимации связаны с конкретным типом данных, для которого они воспроизводят переменное во времени значение.
34. Машиночитаемый носитель информации по п.33, в котором класс анимации из классов анимации обеспечивает значение с плавающей запятой.
35. Машиночитаемый носитель информации по п.33, в котором класс анимации из классов анимации обеспечивает размеры для окна средства представления.
36. Машиночитаемый носитель информации по п.33, в котором класс анимации из классов анимации обеспечивает верхнюю левую позицию прямоугольника.
37. Машиночитаемый носитель информации по п.33, в котором класс анимации из классов анимации обеспечивает изменяющееся во времени значение цвета.
38. Машиночитаемый носитель информации по п.34, в котором класс анимации из классов анимации обеспечивает булево значение.
Описание изобретения к патенту
Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к вычислительным устройствам. Более конкретно, настоящее изобретение относится к компонентам и подсистемам вычислительной системы для поддержания и обеспечения представлений графического пользовательского интерфейса (GUI), управляемых данными и управляющей входной информацией из операционной системы и/или приложений.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
По своей сущности графические пользовательские интерфейсы являются высоко визуализированными. Обычный интерактивный сеанс, охватывающий пользователя и графический пользовательский интерфейс, включает в себя несколько событий выполнения пользователем действия в отношении отображенного элемента (например, перемещение указателя и выбор пиктограммы или управляющего элемента) для запуска операции и последующего визуального наблюдения последствий операции. Один способ привлечения внимания пользователя к конкретным элементам на графическом пользовательском интерфейсе для указания активного или измененного состояния осуществляется посредством анимации графического элемента. Анимация, как здесь подразумевается, включает в себя изменение представления или перемещение графического элемента изображения (например, пиктограммы, управляющего элемента, окна и т.д.) посредством последовательности пошаговых изменений, применяемых к элементу изображения в продолжение периода времени. Однако анимация также включает в себя изменения во времени для элементов, не отображаемых визуально. Следовательно, анимация, как здесь определено, включает в себя как визуальную анимацию (т.е. изменение значения параметра видимого изображения), так и не визуальную анимацию (т.е. изменение значения параметра во времени без воздействия на элемент видимого изображения).
Анимация потенциально может улучшить практичность и эстетическую привлекательность вычислительных систем и приложений. Пользовательские интерфейсы, и особенно графические пользовательские интерфейсы, играют важную роль во взаимодействиях «компьютер/пользователь». Анимация улучшает осуществление взаимодействия «компьютер/пользователь», обеспечивая дополнительный тип информации или способ представления пользователю состояния компьютерной программы или ее компонента. Например, вместо того, чтобы привести просто к исчезновению или немедленному изменению выбранного элемента, анимация обеспечивает возможность отображения последовательности изменений, которая, в комбинации с понятным контекстом, информирует пользователя о том, что произошло (например, удаленный файл плавно перемещается в «корзину»). Кроме того, многие согласятся с тем, что анимация делает взаимодействие с вычислительной системой более интересным и более эффективно привлекает внимание пользователей. Дополнительно, анимация также может автоматизировать изменения значений свойств. В частности, приложение режима пользователя устанавливает ручные таймеры и затем изменяет значение, реагируя на указанные таймеры.
Вероятно, анимация не включена во многие пользовательские интерфейсы, где она была бы полезной для пользователя. Одной простой причиной является стоимость анимации элементов пользовательского интерфейса. Анимация, в основном, является трудоемкой/объемной задачей. Рассматривая подход стоимости/выгоды для реализации анимации в графических пользовательских интерфейсах, выгода от включения анимации должна превышать стоимость. Из-за относительно высокой стоимости программирования анимации в настоящее время многие приложения, для которых была бы выгодна анимация, не анимированы из-за относительно высокой стоимости реализации.
Один способ уменьшения стоимости анимации состоит в том, чтобы многократно использовать программирование анимации для нескольких различных применений. Однако код анимации, в основном, не используется многократно. Вместо этого, код анимации для одного применения (приложения) полностью программируется непосредственно внутри приложений при разработке с использованием инструментальных средств программирования. Режим анимации определен явно внутри кода откомпилированной программы. Во время выполнения при прогоне анимация выполняется просто посредством исполнения предварительно запрограммированных сегментов кода. Дополнительно к тому, что анимация является трудоемким процессом, включение анимации в программу потенциально приводит к чрезмерно большой программе из-за детализированных данных и инструкций, используемых для выполнения требуемых режимов анимации в элементах изображения.
Усилия по улучшению программируемости анимации в пользовательских интерфейсах привели к разработке и обеспечению нередактируемых/монолитных последовательностей сценариев (скриптов) анимаций, из которых вызываются выполняемые сегменты сценария для обеспечения требуемого режима анимации. Такие известные способы программирования анимации, основанные, например на стандарте SMIL (язык синхронизированной интеграции мультимедиа), включают в себя кадрирование изображений. Способы кадрирования изображений основаны на обращении к конкретным сегментам монолитных, нередактируемых сценариев анимации.
Известный подход кадрирования изображений проявляет относительный недостаток гибкости по сравнению с программированием новых режимов анимации в графическом пользовательском интерфейсе. Сценарий кадрирования изображений содержит откомпилированную нередактируемую последовательность инструкций анимации, которая формирует морф (наименьшую неделимую значащую часть) элемента изображения (или композиции элементов) между обозначенной начальной и конечной точкой. Известный подход анимации кадрирования изображений, состоящий в выборе двух точек в последовательности анимации и затем в выполнении программного сценария между указанными двумя точками, помогает программистам, добивающимся реализации режима анимации, воплощенного внутри предварительно созданных/откомпилированных сценариев анимации. Однако подход кадрирования изображений ограничивает рамки поддерживаемых анимаций линейными последовательностями, определенными существующим базовым сценарием анимации. Разработке базового сценария анимации препятствует необходимость идентификации и кодирования всех поддерживаемых режимов анимации перед передачей сценариев анимации пользователям/разработчикам. В продолжение срока использования сценария анимации может возникнуть много вариантов, где в сценарии не содержится требуемый режим анимации. Однако сценарий недоступен для редактирования пользователям/разработчикам и, следовательно, не может использоваться для выполнения нового требуемого режима анимации, который не был закодирован предварительно в откомпилированном сценарии анимации.
Следовательно, существует потребность в более эффективном, гибком и менее дорогостоящем способе выполнения интересных информативных и значимых режимов анимации в изображениях графического пользовательского интерфейса.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Система анимации, описанная в качестве примера и заявленная в приведенной ниже формуле изобретения, обеспечивает основу для определения, создания и выполнения режима анимации как для элементов изображения графического пользовательского интерфейса, так и значений невизуальных параметров. Режим анимации при применении к элементу приводит к изменению значения, соответствующего свойству, в продолжение времени, когда режим анимации является активным.
Система анимации включена в систему, использующую структуру изображения для поддержания набора элементов, соответствующего объектам, изображенным внутри сцены в виде окна на экране дисплея графического пользовательского интерфейса вычислительной системы. Элементы содержат значение переменного свойства, воздействующее на характеристику изображения элемента. Примерами такого переменного свойства являются позиция, размеры, цвет, непрозрачность и т.д.
Система анимации также использует систему свойств. Система свойств поддерживает свойства, соответствующие элементам, поддерживаемым структурой изображения. Система свойств поддерживает динамические свойства, которые могут изменяться во времени.
Система анимации также содержит классы анимации, которые задают конкретные режимы анимации, выполняемые по базовому значению. Экземпляры объектов анимации создаются из классов анимации. Такие экземпляры объектов анимации обеспечивают значения, изменяемые во времени, которые воздействуют на значения, присваиваемые динамическим свойствам. Такие объекты анимации создаются и присоединяются к свойствам, поддерживаемым системой свойств, по предписанию приложения, которое управляет изображением, содержащим элементы, изменяемые во времени, согласно соответствующим объектам анимации.
ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ
В то время как признаки настоящего изобретения подробно изложены в приложенной формуле изобретения, изобретение и его преимущества будут более понятны из последующего подробного описания, рассматриваемого совместно с приложенными чертежами.
Фиг.1 - структурная схема, иллюстрирующая вычислительную систему, в которой может быть реализован вариант осуществления изобретения.
Фиг.2 - возможное схематическое высокоуровневое представление, иллюстрирующее первичные компоненты архитектуры управления графикой, содержащей систему анимации для поддержания анимации графических элементов изображения.
Фиг.3 - блок-схема алгоритма, резюмирующая иллюстративную последовательность повторяемых этапов, выполняемых в системе, воплощающей настоящее изобретение, для поддержания/воспроизведения анимированного графического пользовательского интерфейса.
Фиг.4 - возможное определение классов анимации для выполнения анимации в отношении определенного свойства элемента.
Фиг.5 - итоговый набор возможных типов конструктора анимации для анимации свойства элемента.
Фиг.6 - итоговый возможный класс коллекции анимаций для архитектуры анимации, воплощающей настоящее изобретение.
Фиг.7 - итоговый возможный класс динамической коллекции анимаций для архитектуры анимации, воплощающей настоящее изобретение.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Описана архитектура графического пользовательского интерфейса, которая содержит систему анимации, систему свойств и структуру организации элементов изображения. Эти компоненты, в комбинации, поддерживают основанную на свойствах анимацию элементов изображения графического пользовательского интерфейса и даже не изображаемых величин. Раскрытая архитектура анимации содержит систему анимации, включающую в себя классы анимации, интерфейсы и коллекции, способствующие созданию и отслеживанию экземпляров анимации, которые присоединяются к нескольким графическим изображаемым (и не изображаемым) элементам (например, пиктограммы, диалоговые окна, полосы прокрутки, и т.д.) для получения требуемого режима анимации элементов. Анимация элементов изображения достигается посредством изменения значений свойств элементов изображения. В варианте осуществления изобретения управление изменениями значения свойств осуществляется объектом анимации, экземпляр которого из класса анимации и который присоединен к свойству.
В варианте осуществления изобретения графическая анимация достигается посредством связывания коллекции анимаций с операцией воспроизведения для конкретного элемента внутри дерева элементов. Когда анимированный элемент первоначально нарисован, система воспроизведения обновляет состояние изображения элемента в интервалы времени в соответствии с режимом анимации, определенным компонентами объектов анимации, экземпляры которых созданы из заданных классов анимации.
В варианте осуществления изобретения анимация определена на нескольких уровнях в системе графического изображения, имеющей разные циклы обновления. Очевидные, легко вычисляемые, анимации обновляются с относительно высокой частотой обновления. Другие, более сложные анимации, например такие, которые воздействуют на другие объекты графического изображения, обновляются с относительно низкой частотой обновления.
При рассмотрении в целом, описанная здесь архитектура анимации обеспечивает достаточно гибкую платформу для выполнения нескольких новых режимов анимации и присоединения новых режимов к элементам изображения для создания новых и весьма привлекательных интерфейсов анимированного изображения.
Фиг.1 иллюстрирует возможный вариант соответствующей операционной среды 100 для реализации архитектуры анимации, воплощающей настоящее изобретение. Операционная среда 100 является только одним возможным вариантом подходящей операционной среды и не предназначена для наложения каких-либо ограничений на область использования или функциональные возможности. Другие известные вычислительные системы, среды и/или конфигурации, которые подходят для использования в связи с настоящим изобретением, включают в себя, например, персональные компьютеры, компьютеры-серверы, портативные вычислительные устройства, переносные вычислительные устройства, многопроцессорные системы, системы, основанные на микропроцессорах, сетевые персональные компьютеры (PC), миникомпьютеры, универсальные компьютеры, распределенные вычислительные среды, содержащие любые из вышеупомянутых систем, или т.д.
Изобретение описано в общем контексте ряда этапов и процессов, выполняемых посредством машиноисполняемых команд, таких как программные модули, выполняемые компьютером. По существу, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., выполняющие конкретные задачи или реализующие определенные абстрактные типы данных. Хотя возможный вариант осуществления описан в отношении процессов, выполняемых локально в одной вычислительной системе, изобретение может быть включено в узлы сети, функционирующие в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными через сеть связи. В распределенной вычислительной среде программные модули, в основном, размещены как в локальных, так и в удаленных компьютерных носителях информации, включая запоминающие устройства.
Согласно фиг.1 иллюстративная система для реализации изобретения содержит вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут содержать, но не в ограничительном смысле, процессор 120, системную память 130 и системную шину 121, соединяющую различные компоненты системы, включая системную память, с процессором 120. Системная шина 121 может относится к любому из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующие любую из множества архитектур шины. В качестве примера, но не ограничения, такие архитектуры включают в себя шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), усовершенствованную шину ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединения периферийных компонентов (PCI) (также известную как мезонинная шина), и т.д.
Компьютер 110 обычно содержит несколько разнообразных машиночитаемых носителей информации. Машиночитаемые носители информации могут быть любыми доступными носителями информации, к которым может осуществить доступ компьютер 110, и включают в себя как энергозависимые, так и энергонезависимые носители информации, как съемные, так и несъемные носители информации. В качестве примера, но не ограничения, машиночитаемый носитель информации, может включать в себя компьютерный носитель информации и среду передачи данных. Компьютерные носители информации включают в себя как энергозависимые, так и энергонезависимые, как съемные, так и несъемные носители информации, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерный носитель информации включает в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое ПЗУ (СППЗУ, EEPROM), флэш-память или память, использующую другую технологию, ПЗУ на компакт-диске (CD-ROM), универсальные цифровые диски (DVD) или другой оптический дисковый накопитель, магнитные кассеты, магнитную ленту, магнитный дисковый накопитель или другие магнитные запоминающие устройства или любой другой носитель, который может использоваться для хранения необходимой информации и к которому может осуществить доступ компьютер 110. Среда передачи данных обычно воплощает машиночитаемые команды, структуры данных, программные модули или другие данные в сигнале, модулированном данными, например несущей или другом механизме переноса информации, и включает в себя любую среду доставки информации. Термин «сигнал, модулированный данными» означает сигнал, который имеет одну или более характеристик, установленных или измененных таким образом, чтобы обеспечить кодирование информации в сигнале. В качестве примера, но не ограничения, среда передачи данных включает в себя проводную среду, такую как проводная сеть или прямое кабельное соединение, и беспроводную среду, такую как акустическая, радиочастотная, инфракрасная и другие беспроводные среды передачи данных. Комбинации любых упомянутых выше сред также должны быть включены в диапазон машиночитаемых носителей информации.
Системная память 130 включает в себя компьютерный носитель информации в виде энергозависимой и/или энергонезависимой памяти, например постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода BIOS, содержащая базовые процедуры, способствующие передаче информации между элементами внутри компьютера 110, например, при запуске, в основном, хранится в ПЗУ 131. ОЗУ 132, в основном, содержит данные и/или программные модули, к которым можно осуществить доступ немедленно, и/или которыми в текущее время оперирует процессор 120. В качестве примера, но не ограничения, фиг.1 изображает операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Компьютер 110 также может содержать другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. Исключительно в качестве примера, фиг.1 изображает накопитель 141 на жестких магнитных дисках, осуществляющий считывание с несъемного, энергонезависимого магнитного носителя информации или запись на него, дисковод 151 для магнитного диска, который осуществляет считывание со съемного энергонезависимого магнитного диска 152 или запись на него, и дисковод 155 для оптического диска, который осуществляет считывание со съемного энергонезависимого оптического диска 156, например компакт-диска или другого оптического носителя информации, или запись на него. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации, которые могут быть использованы в иллюстративной операционной среде, включают в себя кассеты на магнитной ленте, карточки флэш-памяти, универсальные цифровые диски, цифровую видеомагнитофонную ленту, твердотельное ОЗУ, твердотельное ПЗУ и т.д. Накопитель 141 на жестких магнитных дисках обычно подсоединен к системной шине 121 посредством интерфейса несъемной памяти, например интерфейса 140, а дисковод 151 для магнитного диска и дисковод 155 для оптического диска, в основном, подсоединены к системной шине 121 посредством интерфейса съемной памяти, например интерфейса 150.
Дисководы и соответствующие им компьютерные носители информации, описанные выше и изображенные на фиг.1, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 накопитель 141 на жестких магнитных дисках изображен как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Следует отметить, что эти компоненты могут быть идентичными операционной системе 134, прикладным программам 135, другим программным модулям 136 и данным 137 программ, или отличаться от них. Здесь операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ даны другие ссылочные позиции для пояснения, что, как минимум, они являются другими копиями. Пользователь может осуществлять ввод команд и информации в компьютер 110 посредством устройств ввода, таких как клавиатура 162 и указательное устройство 161, обычно определяемое как мышь, шаровой манипулятор или сенсорная панель. В число других устройств ввода (не изображены) могут входить микрофон, джойстик, игровая панель, спутниковая антенна, сканер и т.д. Часто эти и другие устройства ввода соединены с процессором 120 посредством интерфейса 160 пользовательского ввода, подсоединенного к системной шине 121, но они могут быть соединены с процессором посредством другого интерфейса и других структур шины, таких как параллельный порт, игровой порт или например универсальная последовательная шина (USB). Также к системной шине 121 посредством интерфейса, такого как видеоинтерфейс 190, может быть подсоединен монитор 191 или другой тип устройства отображения. В дополнение к монитору 191 компьютеры могут также содержать другие периферийные устройства вывода, например громкоговорители 197 и принтер 196, которые могут быть подсоединены посредством периферийного интерфейса 195 вывода.
Компьютер 110 может функционировать в сетевой среде, используя логические соединения с одним или большим количеством удаленных компьютеров, например удаленным компьютером 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим узлом общей сети, и обычно содержит многие или все элементы, описанные выше в отношении компьютера 110, хотя фиг.1 изображает только запоминающее устройство 181. Логические соединения, иллюстрируемые фиг.1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут также включать другие сети. Такие сетевые среды часто используются в офисах, масштаба предприятия сетях, интрасетях и в сети Интернет.
При использовании в сетевой среде LAN компьютер 110 соединен с LAN 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде WAN компьютер 110 обычно содержит модем 172 или другое средство для установления связи через WAN 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 посредством интерфейса 160 пользовательского ввода или другого соответствующего механизма. В сетевой среде программные модули, показанные в отношении компьютера 110, или их части, могут храниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, фиг.1 изображает удаленные прикладные программы 185 как размещенные на запоминающем устройстве 181. Следует понимать, что изображенные сетевые соединения являются иллюстративным вариантом, и могут быть использованы другие средства установления линии связи между компьютерами.
Фиг.2 - схематическая высокоуровневая диаграмма, определяющая компоненты архитектуры графического изображения, воплощающей настоящее изобретение и содержащей совокупность взаимодействующих функциональных компонентов системы анимации. Для описания возможного варианта осуществления настоящего изобретения архитектура графического изображения, иллюстрируемая фиг.2, разделена на совокупность функциональных компонентов. Настоящее изобретение не ограничено иллюстрируемой конфигурацией компонентов. Напротив, функциональные возможности описанных ниже компонентов группируются по-разному в альтернативных вариантах осуществления изобретения.
Система анимации содержит несколько подкомпонентов, которые, в совокупности, обеспечивают анимацию объектов графического изображения (а также невизуальных параметров) на основе команд высокого уровня, выдаваемых приложением 200. Приложение 200 может быть любым приложением или элементом управления, постоянно размещенным либо внутри операционной системы, либо вне ее. Описанная здесь инфраструктура анимации в значительной степени обеспечивает возможность передачи функций (делегирования), в значительной степени, программирования и выполнения анимации для обобщенных компонентов анимации. В варианте осуществления изобретения приложение 200 вместо вычисления обновленных растров выдает системе анимации команды, задающие/определяющие анимацию для одного или большего количества объектов изображения.
В соответствии с командами приложения 200 система анимации формирует объекты анимации. Объекты анимации, после создания их экземпляров, могут быть связаны с деревом 202 элементов. Дерево 202 элементов создается в ответ на события, формируемые приложением 200. Возможные примеры таких событий включают в себя запуск приложения 200, или некоторую другую выполняемую команду, приводящую к созданию нового представления. После этого приложение создает новые элементы в дереве 202 элементов и позже удаляет эти элементы.
Дерево 202 элементов содержит иерархически организованный набор элементов. В варианте осуществления изобретения дерево 202 элементов структурно определяет документ. Каждый элемент описывает объект, который в большинстве случаев соответствует визуальному изображению, отображаемому, например, на графическом пользовательском интерфейсе. Возможные примеры элементов включают в себя: кнопки, таблицы, ячейки таблицы, средства управления списком, кадры, изображения и параграфы (плавающие панели). Элементы в дереве 202 элементов, в основном, содержат одно или большее количество свойств (например, цвет, высота, ширина, позиция, прозрачность, и т.д.). Значения, присваиваемые свойствам элемента, способствуют определению состояния изображения элемента. В варианте осуществления изобретения объекты анимации назначаются одной или большему количеству комбинаций элемент/свойство. После этого экземпляры объекта анимации выполняются для воспроизведения режима анимации на свойстве элемента в соответствии с временной шкалой, с которой связан каждый из экземпляров объекта анимации.
"ВРЕМЕННЫЕ ШКАЛЫ"
Временные характеристики и временные шкалы управляют описанной здесь системой анимации. Аспект временных характеристик описанной здесь системы анимации является модификацией спецификации W3C Языка Синхронизированной Интеграции Мультимедиа (SMIL 2.0). Каждый объект анимации после создания и перед выполнением связывают с временной шкалой (например, определение временной последовательности), которая управляет протеканием последовательности изменений, соответствующих определенному режиму объекта анимации. Дополнительно, вышеупомянутая временная шкала определяет только локальную/относительную временную последовательность режима анимации (например, длительность анимации, повторения, ускорения и т.д.). Следовательно, объект анимации не может быть выполнен до назначения этому объекту анимации "родительской" временной шкалы (либо непосредственно, либо косвенно посредством другого объекта). Следовательно, для выполнения объекта анимации относительная временная шкала присоединяется к определению "родительских" временных характеристик ("родительской временной шкалы"), которая связывает определение относительных временных характеристик объекта анимации с фактическим временем выполнения, определяемым родительской временной шкалой. Следовательно, родительская временная шкала не управляет режимом анимации объекта анимации. Вместо этого родительская временная шкала управляет внешним режимом, например так, как при фактическом начале анимации. Временные шкалы поддерживаются в иерархической структуре дерева временных характеристик, и отдельные временные шкалы имеют атрибуты, которые определяют их режим относительно родительской временной шкалы. Временная шкала верхнего уровня определяется относительно корневой временной шкалы (например, документ, страница, кадр и т.д.).
Существует несколько способов для связывания родительской временной шкалы с объектом анимации, который имеет собственную внутреннюю временную шкалу, определяющую локальный режим временных характеристик анимации. Например, родительская временная шкала является определением временных характеристик, к которому присоединен объект анимации. В одном иллюстративном способе обозначения временной шкалы сущность (например, приложение), запрашивающая создание объекта анимации, устанавливает родительскую временную шкалу, к которой присоединяется временная шкала для объекта анимации. В этом случае, временная шкала объекта анимации идентифицирует родительскую временную шкалу во время создания, и созданный объект анимации является фактическим исполняемым объектом анимации (в противоположность копии), используемым одной или большим количеством комбинаций элементов/свойств, с которыми с этого момента связан объект анимации.
В другом иллюстративном способе обозначения временной шкалы для объекта анимации создается частично полный класс объекта анимации, который включает в себя собственную временную шкалу, но не включает родительскую временную шкалу. Этот неполный вид определения объекта анимации (отсутствие родительской временной шкалы) определен здесь, как "шаблон анимации". Шаблоны анимации не выполняются, вместо этого создаются копии (или клоны) шаблонов анимации, и каждому из новых экземпляров анимации назначается родительская временная шкала анимации элемента, к которому присоединяется новая анимация. В таких экземплярах родительская временная шкала клонированного объекта анимации является родительской временной шкалой, устанавливаемой элементом, к которому присоединен клонированный объект анимации. Отсутствие определения временных характеристик конкретной родительской временной шкалы обеспечивает возможность создания нескольких клонов из одного шаблона анимации, и каждый "клонированный" объект анимации заимствует специфические для элемента временные характеристики выполнения анимации (например, запуск, пауза и т.д.), определяемые элементом, к которому он присоединяется. Так как представленная система поддерживает более позднее назначение родительской временной шкалы, объекты анимации, созданные для размещения на дереве 202 элементов, не требуют явного назначения родительской временной шкалы в момент создания. Однако для обеспечения возможности выполнения анимации такая информация о временных характеристиках пополняется.
В виде альтернативного варианта, приложение 200 передает объекты анимации непосредственно на уровень 204 интеграции мультимедиа (MIL) через интерфейс 206 уровня интеграции мультимедиа (MIL). MIL 204 описан, например, в заявке на патент США с серийным номером 10/184795, поданной 27 июня 2002 года, озаглавленной "Multiple-Level Graphics Processing System and Method", Beda и другие, содержание которой включено в настоящее описание посредством ссылки, включая содержание любых содержащихся в ней ссылок. В варианте осуществления изобретения объекты анимации, переданные непосредственно из приложения 200 на интерфейс 206 MIL, требуют явного назначения родительской временной шкалы, иначе объект анимации не выполняется.
MIL 204 включает в себя набор компонентов воспроизведения объекта графического изображения и компонентов управления, доступ к которым осуществляется через интерфейс 206 MIL. Интерфейс 206 MIL описан, например, в заявке на патент США с серийным номером 10/184796, поданной 27 июня 2002 года и озаглавленной "Generic Parameterization for a Scene Graph", Beda и другие, содержание которой включено в настоящее описание посредством ссылки, включая содержание любых содержащихся в ней ссылок. Интерфейс 206 MIL является интерфейсом, на котором основываются приложение 200 или система 208 средства представления (презентатора) (описанная ниже) для построения низкоуровневого описания для кадра изображения приложения. Интерфейс 206 MIL включает в себя набор вызовов методов, таких как: DrawLine(...), PushTransform(...) и PopTransform(...). Вызовы, обслуживаемые интерфейсом 206 MIL, описывают сцену/документ/или графический пользовательский интерфейс.
Описанное здесь изобретение обеспечивает инфраструктуру для определения анимации для графических объектов, а также любых значений параметров, которые изменяются во времени. Следовательно, фактическая анимация может быть выполнена любым из нескольких средств воспроизведения графики, включая, например, упомянутый здесь MIL 204.
Элементы, поддерживаемые деревом 202 элементов, представляют графические элементы высокого уровня (например, кнопки, полосы прокрутки, и т.д.). В варианте осуществления изобретения такие графические объекты описаны на высоком уровне, который не пригоден для непосредственного использования компонентами MIL 204. Следовательно, презентатор внутри системы 208 презентатора компилирует/транслирует составляющие дерева 202 элементов, с которым связан этот презентатор, в визуальные элементы (например, строки, заполненные прямоугольники и т.д.), которые составляют элементы из дерева 202 элементов. Система 208 презентатора передает визуальные элементы в MIL 204 через интерфейс 206 MIL. Существует много способов реализации функциональных возможностей системы 208 презентатора. Возможный вариант осуществления системы 208 презентатора подробно описан в заявке на патент США с серийным номером 10/(серийный номер еще не присвоен), поданной 9 мая 2003 года (экспресс-почта EV 329734584 США) и озаглавленной "System For Hosting Graphical layout/Presentation Objects", Parikh и другие, содержание которой включено в настоящее описание посредством ссылки, включая содержание любых содержащихся в ней ссылок.
В конкретном варианте осуществления изобретения MIL 204 включает в себя дерево 210 визуальных элементов высокого уровня, которое может обрабатывать визуальные элементы, переданные в MIL 204 системой 208 презентатора через интерфейс 206 MIL. Дерево 210 визуальных элементов высокого уровня содержит структурированный набор примитивов (например, строк, прямоугольников, изображений и т.д.). Структурированный набор примитивов описывает одиночный кадр изображения для приложения. Дерево 210 визуальных элементов высокого уровня поддерживает класс анимаций, определяемых как "независимые анимации". Независимые анимации, которые описаны здесь ниже, для получения анимации не основываются на функции компоновки системы 208 презентатора.
Дерево 212 визуальных элементов низкого уровня потенциально является сжатой (уплотненной) версией дерева 210 визуальных элементов высокого уровня. Дерево 212 визуальных элементов низкого уровня сконфигурировано для быстрого воспроизведения и выполнения независимых анимаций, переданных дереву 212 визуальных элементов низкого уровня через дерево 210 визуальных элементов высокого уровня. Потенциально дерево 212 визуальных элементов низкого уровня между обновлениями его структуры выполняет несколько кадров, например, из дерева 210 визуальных элементов высокого уровня.
Дерево 212 визуальных элементов низкого уровня сконфигурировано для непосредственного взаимодействия с драйверами вывода. Драйвер 214 сетевой связи с удаленным устройством является объектом, соответствующим устройству, в котором приложение 200 воспроизводит выходные данные. Устройство потенциально является устройством, отличным от устройства, на котором выполняется приложение 200. В таком случае, приложение 200 передает свои визуальные выходные данные через сетевое соединение для отображения выходных данных пользователю приложения 200 на удаленном устройстве.
В качестве альтернативного варианта, дерево 212 визуальных элементов низкого уровня вопроизводит выходные данные драйверу 216 графического дисплея. Драйвер 216 графического дисплея обеспечивает передачу данных изображения кадра аппаратным средствам на локальном устройстве, которое отвечает за отображение кадра на выходном дисплее (например, экране видеомонитора) для устройства, выполняющего в текущий момент времени приложение 200 для локального пользователя.
При анимации объектов элемент 213 очереди воспроизведения обеспечивает синхронизацию анимаций между собой. Элемент 213 очереди воспроизведения создается каждый раз, когда требуется воспроизвести новый кадр, например, когда выполняются изменения дерева 202 элементов, или когда объекты анимации вызывают изменение значений. Элемент 213 очереди воспроизведения перестает существовать сразу после полной его обработки. Элемент 213 очереди воспроизведения для синхронизации организует следующие процессы: отсчет дерева 228 временных характеристик (описан ниже) и, вследствие этого, объявление недействительными зависимых анимированных свойств; вызов системы 208 презентатора для завершения компоновки и обновления дерева 210 визуальных элементов высокого уровня после завершения процедуры отсчета; и после того, как система 208 презентатора завершает компоновку, выполнение запроса в дерево 210 визуальных элементов высокого уровня на компиляцию и распространение вниз до дерева 212 визуальных элементов низкого уровня. Этапы выполнения функций элемента 213 очереди воспроизведения описаны ниже согласно фиг.3.
После того как описаны некоторые иллюстративные функциональные блоки, которые поддерживают и формируют кадр данных в соответствии с обеспеченными анимированными значениями, ниже описываются источники анимированных свойств внутри дерева 202 элементов и их изменения, управляемые по времени. Система 220 свойств отвечает за поддержание значений для свойств. Система 220 свойств хранит и вычисляет значения для элементов так, чтобы они могли использоваться системой 208 презентатора для создания дерева 210 визуальных элементов высокого уровня. Система 220 свойств поддерживает модель наследования для значений свойств, причем значение элемента для конкретного свойства наследуется набором потомков этого элемента.
Согласно фиг.2 система 220 свойств получает входные значения из многих источников. Приложение 200 устанавливает базовые значения для динамических свойств (а также восстанавливает их текущие значения), поддерживаемых системой 220 свойств. Дерево 202 элементов запрашивает из системы 220 свойств значения для свойств элементов внутри дерева 202 элементов, чтобы передать системе 208 презентатора. Система 208 презентатора, в свою очередь, использует значения свойств для формирования входных данных для вызовов к интерфейсу 206 MIL. В продолжение обработки элементов дерева 202 элементов система 208 презентатора запрашивает базовые значения динамических свойств и другую информацию, связанную с элементами из системы 220 свойств, для организации и присвоения значений элементам, составляющим конкретное представление, которому соответствует система 208 презентатора.
Система 220 свойств назначает приоритеты значениям из разных источников. Например, система 220 свойств обеспечивает возможность задания значению свойства, установленному локально, большего старшинства, чем значению, установленному в ведомости свойств, или значению, унаследованному от родителя. Система 220 свойств включает в себя логические средства для сортировки значений, обеспечиваемых разными источниками, и возвращения любому получателю значения с наиболее высоким приоритетом. Система 220 свойств при вычислении текущего значения для свойства учитывает любые активные анимации, присоединенные к свойству. Если пользователь запрашивает значение из конкретного источника, то система 220 свойств обрабатывает такой запрос.
Экземпляры объектов анимации, которые изменяют значения свойств, поддерживаемых системой 220 свойств, создаются из классов 222 анимации, которые определяют и выполняют способы обновления значения свойства на основе временной шкалы, соответствующей экземплярам объекта анимации (или их родителям). Экземпляр объекта класса анимации создается приложением 200. Приложение 200 также устанавливает значения на объектах анимации, экземпляры которых созданы из классов 222 анимации. Приложение 200 также может запрашивать текущее значение на конкретном объекте класса анимации. Когда отсутствуют ссылки на объект класса анимации, он удаляется. Каждый из классов 222 анимации имеет конкретные свойства, такие как From (От), To (До), и Duration (Продолжительность), которые описывают конкретный режим анимации.
Классы анимации типизированы так, чтобы для разных режимов анимации и соответствующих им типов данных существовали разные классы. Возможные примеры классов анимации включают в себя:
FloatAnimation - обеспечение значения с плавающей запятой,
BoxUnitAnimation - обеспечение размеров для окна презентатора,
PointAnimation - обеспечение верхней левой позиции прямоугольника,
ColorAnimation - обеспечение изменяющегося во времени кода цвета и
BoolAnimation - обеспечение значения Boolean (булева значения).
Экземпляры классов 220 анимации являются неизменяемыми. Следовательно, если они созданы, то значения их свойств больше не могут быть изменены. Это означает, что разработчик приложения может многократно использовать экземпляр анимации в нескольких местах, не заботясь о том, что будет изменен определенный для него режим.
Классы 224 коллекции анимаций организуют классы 222 анимации. Класс коллекции анимаций создается приложением 200. Приложение 200 задает один или большее количество классов 222 анимации, содержащихся внутри класса коллекции анимаций. Затем приложение 200 задает класс коллекции анимаций как коллекцию анимаций, которые будут анимировать динамическое свойство в системе 220 свойств. Приложение 200 также может связать экземпляр класса коллекции анимаций с любым динамическим свойством, соответствующим любому конкретному элементу в дереве 202 элементов. Приложение 200 обеспечивает возможность нумерации классов анимации, содержащихся в конкретном классе коллекции анимаций из классов 224 коллекций анимации, а также запроса комбинированного значения анимации из класса коллекции анимаций. Экземпляр класса коллекции анимаций удаляется посредством «сборки мусора», когда отсутствуют ссылки на конкретный экземпляр класса коллекции анимаций.
Коллекция анимаций является коллекцией объектов анимации, которые обрабатывают один тип данных. Класс коллекции анимаций имеет информацию об относительном приоритете классов анимации в своем списке и о том, как компоновать классы анимации вместе в соответствии с базовым значением, передаваемым в экземпляр класса коллекции анимаций, и класс анимации возвращает текущее значение. В варианте осуществления изобретения классы анимации соединены между собой в цепочку в классах коллекции анимаций. В качестве входных данных коллекция анимаций получает базовое значение свойства. Первая стадия (объект анимации) воспроизводит измененное значение свойства того же типа, что и входные данные, для следующей возможной стадии (в случае нескольких объектов анимации внутри объекта класса коллекции анимаций). Конвейерная обработка базового значения организованными в виде конвейера объектами анимации коллекции анимаций воспроизводит текущее значение для анимированного свойства. Результатом такой конвейерной обработки является создание последовательно выполняемой функции комбинированной анимации.
Класс коллекции анимаций существует для каждого типа значения свойства, для которого поддерживается анимация (например, FloatAnimationCollection, BoxUnitAnimationCollection, PointAnimationCollection, ColorAnimationCollection и BoolAnimationCollection). Этот список типов класса коллекции анимаций является просто возможным примером. Для специалистов в данной области техники очевидно потенциальное многообразие различных типов класса коллекции анимаций. Как и классы 220 анимации, экземпляры класса коллекции анимаций из классов 224 коллекции анимаций являются неизменяемыми.
Класс 226 динамической коллекции анимаций строится на функциональных возможностях классов 224 коллекции анимаций. Экземпляр класса 226 динамической коллекции анимаций хранит ссылку на экземпляр класса коллекции анимаций из классов 224 коллекции анимаций. Дополнительно, экземпляр объекта динамической коллекции анимаций хранит ссылку на элемент внутри дерева 202 элементов и на свойство для элемента, которое анимирует экземпляр динамической коллекции анимаций. Разработчик приложения, в варианте осуществления изобретения, не может создавать или осуществлять доступ к экземпляру динамической коллекции анимаций. Вместо этого система 220 свойств после получения запроса из приложения 220 создает экземпляр динамической коллекции анимаций.
Экземпляр объекта динамической коллекции анимаций создается системой 220 свойств, когда экземпляр класса коллекции анимаций связывают с динамическим свойством. Динамическое свойство хранит и/или вычисляет значение, соответствующее однократно определенному свойству для элемента в дереве 202 элементов, например, ширине, высоте, верхней части, левой части, или любому другому определяющему свойству любого элемента. Динамическая коллекция анимаций также хранит коллекцию анимаций, экземпляр которой создан из класса анимации классов 224 коллекции анимаций и, таким образом, связывает класс коллекции анимаций с конкретной комбинацией элемент/свойство в дереве 202 элементов. Если система 220 свойств запрашивается на предмет текущего значения динамического свойства, то система 220 свойств определяет, имеет ли динамическое свойство связанный с ним объект динамической коллекции анимаций, экземпляр которого создан из класса 226 динамической коллекции анимаций, и система 220 свойств обрабатывает базовое значение посредством любых активных в текущий момент времени классов анимации в динамической коллекции анимаций для обеспечения текущего анимированного значения. В варианте осуществления изобретения, когда система 220 свойств запрашивает конкретный объект динамической коллекции анимаций в отношении текущего значения, упомянутая динамическая коллекция анимаций передает этот запрос на соответствующий объект коллекции анимаций, экземпляр которого создан из одного из классов 224 коллекции анимаций. Объект коллекции анимаций, в свою очередь, осуществляет цикл по своему набору объектов анимации, экземпляры которых созданы из классов 222 анимации, для воспроизведения их текущих значений, чтобы обеспечить базис для воспроизведения объектом коллекции анимаций конечного значения для вызывающей его динамической коллекции анимаций.
Некоторые анимации, созданные приложением 200, не могут устанавливать родительскую временную шкалу и предполагают, что соответствующую родительскую временную шкалу для запрошенной анимации выберет система анимации. В продолжение процесса связывания система 220 свойств первоначально определяет, имеет ли родительскую временную шкалу каждый класс анимации внутри класса коллекции анимаций. Если какой-либо класс анимации не связан с родительской временной шкалой, то создается новый класс анимации, с которым связывается родительская временная шкала элемента изображения, который связан с динамической коллекцией анимации. Дополнительно, следует отметить, что если родительская временная шкала, связанная с элементом изображения, изменяется, то динамическая коллекция анимаций перестраивается для отражения изменения в родительской временной шкале.
Для правильного функционирования все классы анимации внутри класса коллекции анимаций должны в конечном счете установить родительскую временную шкалу, которая управляет временными характеристиками их выполнения. Если все классы анимации в определенном классе коллекции анимаций связаны с родительскими временными шкалами, то динамическая коллекция анимации использует заданный класс коллекции анимаций. В противном случае, учитывая неизменяемость классов анимации и классов коллекции анимаций, система 220 свойств создает новый класс коллекции анимаций, и новый класс коллекции анимаций содержит новые классы анимации, каждый из которых имеет назначенную родительскую временную шкалу. После того как система 220 свойств создала новый класс коллекции анимаций, в котором каждый объект анимации имеет родительскую временную шкалу, система 220 свойств предоставляет класс коллекции анимаций динамической коллекции анимаций, связанной с парой «элемент/динамическое свойство». Если динамической коллекции анимации, связанной с этой парой, еще не существует, то система свойства должна создать новую коллекцию 226.
Как многократно отмечалось выше, временные характеристики определяют режимы анимации, связанные с объектами анимации, присоединенными к свойствам элементов в дереве 202 элементов. Как используется в настоящем описании, временная шкала является экземпляром объекта временных характеристик, поддерживающего состояние времени выполнения в соответствии с набором атрибутов временных характеристик. Дерево 228 временных характеристик, в варианте осуществления изобретения, является структурой данных, содержащей узлы временных характеристик (временные шкалы), организованные иерархически. Отношение между узлами временных характеристик определяется правилами наследования и соответствующими конкретному узлу атрибутами временных характеристик каждой временной шкалы, соответствующей узлу временных характеристик в дереве 228 временных характеристик. Правила наследования включают в себя определение смещения начального времени потомков относительно начального времени родителя. Дополнительно, отношения наследования определяют отношения управления. Например, если осуществляется перезапуск, повтор, пауза, возобновление, поиск или завершение предка, то тот же процесс осуществляется для всех потомков (и их потомков и т.д.). Такие отношения обеспечивают возможность запуска целой группы временных шкал потомков посредством воздействия на одну родительскую временную шкалу. Дерево 228 временных характеристик хранит: (1) временные шкалы, которые потенциально управляют изменениями значений экземпляров класса анимации, и (2) контейнеры временных шкал, которые содержат другие временные шкалы. Значения хода выполнения, полученные из временных шкал, используются для вычисления текущего значения любого заданного объекта анимации. Дерево 228 временных характеристик создается при запуске приложения 200.
Дерево 228 временных характеристик выполняет роль уведомления о событии, связанном с временными характеристиками, для инфраструктуры анимации, иллюстрируемой фиг.2. Первоначально, когда создается экземпляр динамической коллекции анимаций, динамической коллекцией анимаций выдается запрос к дереву 228 временных характеристик для выдачи уведомления, когда в ее объекте класса коллекции анимаций имел место прогресс хода выполнения экземпляра анимации. При получении динамической коллекцией анимации уведомления от дерева 228 временных характеристик о том, что имел место прогресс хода выполнения одной из ее анимаций, экземпляр динамической коллекции анимаций передает системе 220 свойств информацию о том, что теперь динамическое свойство для элемента изображения, которому он сопоставлен, является недействительным. Недействительность свойства элемента изображения в свою очередь служит причиной запуска процесса, определенного здесь как зависимая анимация. При обработке зависимой анимации система 208 презентатора запрашивается на предмет формирования дерева 210 визуальных элементов высокого уровня в соответствии с изменением значения, соответствующего анимации.
Дерево 228 временных характеристик также выполняет роль измерения хода выполнения и оповещения для экземпляров классов 222 анимации. При наличии недействительности экземпляры классов 222 анимации запрашиваются на предмет передачи информации об их текущих значениях. Каждый из классов 222 анимации запрашивает дерево 228 временных характеристик на предмет значения хода выполнения на временной шкале, с которой он связан. После этого классы 222 анимации вычисляют свои текущие значения на основе значения хода выполнения, обеспеченного деревом временных характеристик, и предоставляют текущие значения любому запрашивающему объекту.
Элемент 213 очереди воспроизведения также взаимодействует с деревом 228 временных характеристик. Элемент очереди воспроизведения является элементом очереди в очереди операционной системы, которая при выполнении приводит к компиляции сформированных приложением 200 приложения/страницы/сцены, вплоть до дерева 212 визуальных элементов низкого уровня и, в итоге, к воспроизведению на устройстве отображения. Первое, что при вызове выполняет элемент очереди воспроизведения, является "отсчет" дерева 228 временных характеристик. Это приводит к обновлению деревом временных характеристик своих временных шкал в соответствии с текущим временем. В результате дерево 228 временных характеристик выдает уведомления, которые могут привести к возникновению множественной недействительности в системе 220 свойств. При выполнении отсчета значения хода выполнения независимых анимаций также обновляются. Если при обработке элемента 213 очереди воспроизведения дерево 228 временных характеристик изменяется, то элемент очереди воспроизведения будет осуществлять цикл и в то же время "повторное отсчитывание", пока не стабилизируется дерево 228 временных характеристик.
Независимые/зависимые анимации
Независимые и зависимые анимации упоминались выше. В варианте осуществления изобретения система анимации, иллюстрируемая фиг.2, поддерживает по меньшей мере эти два упомянутых типа экземпляров анимации, такая классификация основана на их отношениях с другими экземплярами анимации. Экземпляры независимой анимации не воздействуют на компоновку представления и, следовательно, могут обновляться с более высокой частотой. Возможным вариантом независимой анимации является анимация цвета. Цвет объекта не изменяет его ширину или высоту, и, следовательно, анимация изменения цвета не воздействует на компоновку (например, размер или позицию) элементов, анимированных с изменением цвета, на странице.
Зависимые анимации, в основном, изменяют расположение элемента, с которым зависимые анимации связаны, и, следовательно, зависимые анимации требуют пересчета компоновки графического пользовательского интерфейса. Экземпляры зависимой анимации хранятся внутри структуры дерева 202 элементов для обеспечения соответствующей обработки всех свойств элемента изображения, на которых оказывается воздействие. Из-за потенциально значительно большего объема вычислений и требований в отношении доступа к памяти зависимые анимации вычисляются MIL 204 с потенциально более низкой частотой обновления.
Три уровня/стадии для классов "Анимации"
В варианте осуществления настоящего изобретения режим анимации, применяемый к свойствам элемента изображения, реализуется посредством трех уровней классов, и их соответствующих экземпляров. Продолжая согласно фиг.2, классы 222 анимации содержат набор классов объектов, определяющих объекты, которые могут рассчитывать отдельные определенные операции анимации на значении свойства (обычно один режим анимации).
На следующем уровне классы 224 коллекции анимаций определяют набор объектов, которые группируют/назначают один или большее количество отдельных классов анимации из классов 222 анимации в определение одного класса анимации, вследствие этого обеспечивая создание комбинированных режимов анимации на одном свойстве элемента.
На следующем уровне динамическая коллекция 226 анимаций определяет тип объекта для реализации/выполнения режима анимации, определенного одним из классов 224 коллекции анимаций, на свойстве элемента внутри дерева 202 элементов. Таким функциональным возможностям способствуют экземпляры динамической коллекции 226 анимаций, в которых хранятся ссылка на экземпляр класса коллекции анимаций из классов 224 коллекции анимаций; и ссылка на элемент внутри дерева 202 элементов и на свойство элемента, анимацию которого осуществляет экземпляр динамической коллекции анимаций. Динамическая коллекция анимаций создается системой 220 свойств, когда экземпляр класса коллекции анимаций связывается с динамическим свойством. Динамическое свойство хранит и/или вычисляет значение, соответствующее однократно определенному свойству для элемента в дереве 202 элементов, например, ширине, высоте, верхней левой позиции или любому другому определяющему свойству любого элемента. Динамическая коллекция анимаций также хранит ссылку на объект класса коллекции анимаций, экземпляр которого создан из одного из классов 224 коллекции анимаций, и, следовательно, связывает объект класса коллекции анимаций с конкретной комбинацией элемент/свойство в дереве 202 элементов.
На фиг.3 в общем виде приведен набор этапов для возможной последовательности воспроизведения, выполняемой элементом 213 очереди воспроизведения, по фиг.2. Как изложено выше, элемент 213 очереди воспроизведения при выполнении вызывает компиляцию приложения/страницы/сцены, сформированной приложением 200, вплоть до дерева 212 визуальных элементов низкого уровня для воспроизведения устройством отображения. Следует отметить, что эта последовательность этапов является иллюстративной, и в других вариантах осуществления изобретения операция элемента очереди воспроизведения модифицируется.
Первоначально, на этапе 300 элемент 213 очереди воспроизведения вызывает выполнение отсчета дерева 228 временных характеристик. Отсчет дерева 228 временных характеристик приводит к обновлению деревом 228 временных характеристик своих временных шкал в соответствии с текущим временем. В результате дерево 228 временных характеристик выдает уведомления, которые могут привести к недействительности многих данных (например, недействительности свойств, в отношении которых осуществляется зависимая анимация) в системе 220 свойств. В варианте осуществления изобретения объектами анимации, на которые оказало воздействие обновление времени, устанавливается событие Changed (Изменен). Такие события собираются и обрабатываются экземпляром объекта Динамической Коллекции Анимаций, связанным с объектом анимации. Объект Динамической Коллекции Анимаций, в свою очередь, делает недействительным свое динамическое свойство для элемента. При выполнении отсчета на этапе 300 также обновляются значения хода выполнения независимых анимаций.
После отсчета дерева 228 временных характеристик, на этапе 310 элементом очереди воспроизведения выполняется процесс компоновки. В процессе 310 компоновки обновляется дерево 210 визуальных элементов высокого уровня в соответствии с любыми изменениями дерева 202 элементов с последнего выполнения элемента очереди воспроизведения. В варианте осуществления изобретения презентаторы, отвечающие за компоновку графических элементов в представлении, которые изменили значения свойств (в результате отсчета времени), становятся недействительными, а это означает, что они должны повторно вычислить свое расположение и создать новое дерево визуальных элементов высокого уровня, включающее в себя изменения для динамических свойств, подвергшихся воздействию. Также, на этапе 310, система изображения принимает и осуществляет диспетчеризацию запросов из приложений, оболочки операционной системы и т.д., которые потенциально воздействуют на компоновку. Возможные примеры таких запросов включают в себя проверку наличия требуемых данных, обратные вызовы к программам пользователя, и общие действия приложения, воздействующие на графическое изображение.
При процессе 310 компоновки структура дерева 228 временных характеристик, потенциально, может измениться (например, был добавлен новый узел временных характеристик, был удален существующий узел, была установлена новая ссылка на существующий узел временных характеристик и т.д.). Если на этапе 320 определено, что структура дерева временных характеристик изменилась, то управление переходит обратно к этапу 300 и повторно выполняется отсчет временных характеристик для структуры дерева 228 временных характеристик в ее новом виде.
Если структура дерева 228 временных характеристик не изменилась, то управление переходит от этапа 320 к этапу 330 воспроизведения, на котором дерево 210 визуальных элементов высокого уровня компилируется и распространяет новые/обновленные данные графического изображения до дерева 212 визуальных элементов низкого уровня. Дерево 212 визуальных элементов низкого уровня на основе полученной информации об изменениях воспроизводит пересчитанные выходные данные драйверам 262 и/или 264.
После этого, на этапе 340, временные шкалы, связанные с динамической коллекцией анимаций, запрашиваются на предмет определения следующего момента времени, в который потребуется отсчет (ближайшее событие). Если дополнительные отсчеты не требуются, то управление переходит к завершению 360. Если требуются дополнительные отсчеты дерева, то управление переходит к этапу 350, на котором создается новый экземпляр элемента 213 очереди воспроизведения для экземпляра динамической коллекции анимаций анимированного свойства элемента. Новый элемент очереди воспроизведения устанавливает время, в которое он должен быть выполнен. Если установленное время выполнения еще не наступило, то элемент очереди воспроизведения первоначально помещается в неактивный список. При наступлении упомянутого времени элемент очереди воспроизведения помещается в активную очередь для выполнения в соответствии с этапами, показанными на фиг.3. После создания нового элемента очереди воспроизведения управление переходит к завершению 360.
Режим анимации для свойства элемента выполняется одним или большим количеством объектов анимации, экземпляры которых созданы из классов 222 анимации. Каждый объект анимации включает в себя функцию анимации, которая принимает первый набор входных данных (включая по меньшей мере текущее значение временной шкалы) и производит выходные данные типа, соответствующего для воспроизведения анимированного элемента изображения. Разные классы 222 анимации (например, PointAnimation) преобразуют значение хода выполнения на временной шкале в соответствующий тип данных (например, точку) для свойства элемента.
На фиг.4 в общем виде приведена иллюстративная высокоуровневая структура класса анимации. Разные классы анимации следуют общему образцу и реализуют аналогичный набор интерфейсов. Различия возникают прежде всего в типах данных свойств и в вычислениях (учитывая конкретный тип данных, например: с плавающей запятой, логический, точка и т.д.), выполняемых для присвоения текущего значения входному значению, ввиду вычисленного значения хода выполнения. Такие модификации очевидны для специалистов в данной области техники, учитывая содержащиеся здесь примеры и описание функциональных возможностей классов анимации.
В варианте осуществления изобретения структура класса анимации включает в себя набор Свойств Анимации 400. Свойство From (От) обозначает начальное значение анимации. Свойство To (До) задает конечное значение анимации. Свойство By (На) задает значение изменения (дельту) в конце анимации. Вместо задания явного конечного значения в свойстве To, свойство By задает разность между конечным значением анимации и начальным значением анимации.
Класс анимации может содержать несколько сегментов с использованием различных параметров временных характеристик внутри каждого сегмента. Свойство KeyValues (Ключевые значения) задает список значений для анимации. Свойство Interpolation method (Метод интерполяции) задает метод для интерполяции между двумя ключевыми значениями, установленными в свойстве KeyValues. Возможные варианты методов интерполяции включают: дискретный, линейный, пошаговый метод, и метод интерполяции с помощью сплайн-функций. Свойство KeyTimes (Ключевые моменты времени) обозначает список значений времени, используемых для управления пошаговым выполнением анимации. Этот список содержит такое же число элементов, что и список KeyValues. Список упорядочен в порядке возрастания значений времени, и первое значение в этом списке равно 0, а последнее равно 1 (если InterpolationMethod не установлен в значение Discrete (Дискретный), когда последнее значение может быть меньше или равно 1). Свойство KeySplines (Ключевые сплайны) задает набор контрольных точек Безье, соответствующих списку KeyTimes. Контрольные точки Безье определяют кубическую функцию, которая управляет интервалом пошагового выполнения анимации. Этот список содержит на один элемент меньше, чем список KeyTimes. Он используется только в случае, если атрибут InterpolationMethod установлен в Spline (Сплайн).
Свойства анимации внутри структуры класса анимации включают в себя некоторые булевы атрибуты. Свойство IsOverridingBaseValue (Перекрывается ли базовое значение) устанавливается в True (Истина), если временная шкала объекта анимации активна или находится в периоде исполнения. Дополнительно, свойство IsAccumulating (Осуществляется ли накопление) обеспечивает возможность циклической последовательности анимаций оказывать кумулятивное воздействие на свойство элемента. Когда свойство IsAccumulating установлено в True, вместо повторения одной и той же траектории на каждой итерации повторяющейся последовательности анимаций, анимация суммирует эффект каждой итерации, по существу, выполняя компоновку с собой и формирование свойства элемента на основе изменения, обусловленные предыдущей анимацией.
Свойство UsesBaseValue (Использование базового значения) возвращает True, если возвращаемое значение в GetValue (Получить значение) для объекта анимации (описано ниже совместно с набором методов 420) зависит от базового значения (обеспеченного для объекта анимации). Если свойство UsesBaseValue возвращает False (Ложь), то объект анимации игнорирует базовое значение в целом. Если объект анимации находится в списке, то свойство UsesBaseValue обеспечивает возможность оптимизации, где в некоторых случаях требуется оценка только подмножества объектов анимации.
Структура класса анимации также включает в себя набор свойств временных характеристик 410. Свойство CurrentTime (Текущее время) обеспечивает текущее время, локальное для временной шкалы объекта анимации, свойство ParentTimeline (Родительская временная шкала) обозначает временную шкалу, которая представляет родительское временные характеристики временной шкалы объекта анимации. Свойство ParentTimeline может иметь ссылку на любую другую временную шкалу, или на одно из двух специальных опорных значений: Timeline.VisualParent (Визуальный родитель) или Timeline.RootTimeline (Корневая временная шкала). Если свойство ParentTimeline задано в Timeline.VisualParent, то родитель для временной шкалы порождается автоматически при использовании временной шкалы, связанной с визуальным элементом, в котором она используется. Если визуальный элемент не имеет связанной с ним DefaultTimeline (Временной шкалы по умолчанию), то рекурсивно проверяется родительский визуальный элемент. Если свойство ParentTimeline установлено в Timeline.RootTimeline, то родитель этой временной шкалы порождается автоматически при использовании "корня" дерева 228 временных характеристик.
Набор свойств временных характеристик также включает в себя свойство Begin (Начало) для обозначения времени, в которое должна начинаться временная шкала для конкретного объекта анимации. По умолчанию значение начального времени является относительным по отношению к начальному времени родительской временной шкалы, но также может быть установлено смещение, обеспечивающее время относительно начального или конечного времени некоторой другой временной шкалы. В последнем случае, родитель этой другой временной шкалы должен быть тем же самым, что и для временной шкалы для этого конкретного объекта анимации. Свойство Duration (Длительность) объекта анимации обозначает длительность одного периода от начала до конца. Свойство Progress (Ход выполнения) обозначает текущее значение хода выполнения на временной шкале. Если IsOverridingBaseValue (описано ниже) является ложным (False), то свойство Progress возвращает 0. Во всех случаях значение, возвращаемое свойством Progress, всегда является значением между 0 и 1 включительно.
В варианте осуществления изобретения поддерживается повтор анимации. Свойство RepeatCount (Количество повторов) задает, сколько раз период с начала до конца должен быть повторен в течение времени существования этого объекта анимации. Значение свойства RepeatCount может быть дробным значением. Специальное значение, float.PositiveInfinity (плавающее.Плюс бесконечность), служит индикатором того, что временная шкала должна повторяться непрерывно. Свойство CurrentRepeat (Текущий повтор) определяет текущую итерацию временной шкалы при ее повторении. Первая итерация является итерацией 1. Если свойство анимации IsOverridingBaseValue является ложным, то свойство CurrentRepeat возвращает 0.
Свойство RepeatDuration (Длительность повторения) определяет отрезок времени, в течение которого должен повторяться период от начала до конца. Это может приводить к частичному выполнению (дробному количеству повторений). Значение Time.Indefinite (Время не определено) свойства RepeatDuration указывает, что временная шкала должна повторяться постоянно. Если свойство IsOverridingBaseValue ложно, то это свойство возвращает Time.Unspecified (Время не задано). Если значения заданы и для свойства RepeatCount, и для свойства RepeatDuration, то общая продолжительность активности является минимумом из двух установленных свойств.
Свойства временных характеристик для классов анимации также включают в себя свойство Acceleration (Ускорение), которое обозначает значение между 0 и 1, представляющее дробную часть элементарной длительности, проведенной в фазе ускорения времени. Свойство Deceleration (Замедление) обозначает значение, между 0 и 1, представляющее дробную часть элементарной длительности, проведенной в фазе замедления времени. Так как анимация не может одновременно осуществлять ускорение и замедление, то сумма значений свойств ускорения и замедления не превышает 1 (элементарная длительность).
Свойство Autoreverse (Автоматическое прохождение в обратном направлении) определяет, должна ли анимация проходить от начала к концу и затем обратно. Если свойство Autoreverse имеет значение "True", то временная шкала проходит от начала к концу и затем сразу проходит в обратном направлении, от конца к началу. Временная шкала будет активна в продолжение удвоенного времени, установленного свойством Duration объекта анимации.
Свойство End (Конец) обеспечивает значение, задающее максимальное конечное время временной шкалы для объекта анимации. Если значение свойства End меньше суммы значений свойств Begin и Duration, то период активности прерывается значением свойства End. Дополнительно, все установленные начала анимации (планируемые или интерактивные) игнорируются после времени, установленного атрибутом End.
Значение свойства EndSync (Синхронизация окончания) определяет неявную длительность временной шкалы. Неявная длительность, определенная свойством EndSync используется, если свойство Длительности не установлено явным образом. Неявная длительность временной шкалы может быть определена сихронизированным объектом, которым она управляет, или другими временными шкалами, которые могут быть родительскими для нее.
Свойство Fill (Исполнение) задает режим временной шкалы объекта анимации после прохода конечного времени. По умолчанию, временная шкала «включена» только от начала до конца, но если свойство Fill установлено в "Freeze" (Заморозить), то временная шкала остается по прошествии конечного времени. В этом случае, значение хода выполнение для объекта анимации после конечного времени равно тому значению, которое было в конечное время. Установочными параметрами для значения свойства Fill являются Remove (Удалить) (глобальное значение по умолчанию), Freeze (Заморозить), и Hold (Сохранить). Свойство FillDefault (Исполнение по умолчанию) обозначает значение, устанавливаемое по умолчанию для свойства Fill. Если значение свойства Fill не задано, то режим исполнения задает значение свойства DefaultFill. Дополнительно, это значение по умолчанию наследуется временными шкалами, для которых эта временная шкала является родительской, если они не имеют собственного установленного атрибута FillDefault. Возможные значения для свойства DefaultFill идентичны значениям для атрибута Fill.
Свойство Restart (Повторный запуск) обозначает режим временной шкалы объекта анимации, когда достигается второе (или более позднее) начальное время. По умолчанию, начальное время прерывает любой активный период и переходит обратно к времени t = 0 для временной шкалы. Однако, если свойство Restart установлено в WhenNotActive (Когда не является активным), то начальное время, которое должно прервать активный период, игнорируется. Возможными значениями для свойства Restart являются: Always (Всегда), WhenNotActive и Never (Никогда). Свойство Restart Default (Повторный запуск по умолчанию) обозначает значение, устанавливаемое по умолчанию для свойства Restart.
Свойство Speed (Скорость) обозначает относительную скорость, с которой время должно проходить во временной шкале для анимации объекта (по сравнению с его родительской временной шкалой). Например, значение 1 означает нормальную скорость, в то время как значение 2 означает, что время протекает вдвое быстрее (и, следовательно, воспринимаемая длительность заканчивается, составляя только половину заданной атрибутом Duration). Это значение может быть отрицательным, и в этом случае время в этой временной шкале течет в обратном направлении, от конечного до начального времени, как будто родительская временная шкала была обращена.
Набор булевых свойств (Boolean) включен для идентифицикации состояния анимации объекта анимации. Свойство IsForwardProgressing (Прямое ли направление хода выполнения) идентифицирует, идет ли время в этой временной шкале от 0 к 1 относительно времени настенных часов. Свойство IsForwardProgressing учитывает эффект вложенности в потенциально обращенные временные шкалы. Если IsOverridingBaseValue ложно, то IsForwardProgressing возвращает то же значение, которое бы возвращала родительская временная шкала этой временной шкалы. Свойство IsReversed (Является ли обращенным) идентифицирует, находится ли временная шкала в обращенном периоде, как видно из собственной локальной системы отсчета временной шкалы. Это свойство в отличие от свойства IsForwardProgressing не учитывает эффект вложения в потенциально обращенные временные шкалы. Если значение свойства IsOverridingBaseValue ложно, то свойство Is Reversed возвращает ложь.
Другие свойства относятся к состоянию состояния активности анимации. Свойство IsChanging (Изменяется ли) идентифицирует, является ли активной временная шкала объекта анимации. В отличие от этого, свойство IsPaused (Является ли приостановленной) возвращает истину, если временная шкала является активной, но анимация приостановлена.
Класс анимации также включает в себя набор методов 420. Набор методов - конструкторов внутри конкретного класса анимации создает объекты анимации, содержащие в себе конкретные режимы анимации конкретного типа класса анимации (например, с плавающей точкой, булевый, точка и т.д.). Набор методов - конструкторов типов анимации, соответствующих конкретным режимам анимации, описан ниже в качестве примера со ссылкой фиг.5.
Метод BeginIn (Ввод начала) получает в качестве входных данных значение времени смещения. Метод BeginIn вызывает интерактивное начало в момент времени в будущем или прошлом, соответствующий значению смещения. Входной параметр смещения определяет время относительно родительской временной шкалы объекта анимации. Если родительская временная шкала не активна, то этот метод не имеет никакого действия.
Аналогично, метод EndIn (Ввод окончания) получает в качестве входных данных другое относительное значение времени. Метод EndIn вызывает интерактивное окончание в заданный момент времени в будущем или прошлом. Параметр находится в системе отсчета родительской временной шкалы объекта анимации. Если родительская временная шкала не активна, то этот метод не имеет никакого действия.
Обеспечиваются методы для остановки/запуска хода выполнения объекта анимации, пока он активен. Метод Pause (Пауза) приостанавливает временную шкалу объекта анимации и потомков, которые сверяются с временной шкалой этого объекта анимации. Если эта временная шкала не активна, то этот метод не имеет никакого действия. Напротив, метод Resume (Возобновление) перезапускает временную шкалу объекта анимации и все ее дочерние шкалы. Если эта временная шкала не активна и приостановлена, то этот метод не имеет никакого действия.
Метод Seek (искать) обеспечивает возможность перемещения непосредственно в конкретную точку в последовательности выполнения анимации на основе заданного значения смещения. Метод Seek изменяет текущее время для этой временной шкалы, что может оказать воздействие на все ее дочерние временные шкалы. Если временная шкала не активна, то этот метод не имеет никакого действия.
Метод GetUniqueInstance (Получить уникальный экземпляр) получает на входе временную шкалу и возвращает экземпляр объекта анимации, который может поддерживать собственное состояние времени выполнения, независимо от других экземпляров. Если объект анимации содержит автоматически порожденные временные шкалы, то возвращаемый экземпляр имеет те временные шкалы, для которых временная шкала, переданная на вход в виде параметра, является родительской.
Метод GetValue (Получить значение) получает в качестве входных данных базовое значение определенного типа и возвращает другое значение того же типа, что и входное базовое значение. Значение выходных данных зависит от входных данных (базовое значение) и от внутреннего состояния модификатора (например, объект анимации/коллекция анимаций), которому оно передается. В частности, это означает, что при вызове GetValue больше одного раза с одинаковыми входными данными не гарантируется возвращение одинаковых выходных данных и, фактически, ожидается, что выходные данные будут изменяться по ходу последовательности анимаций. В случае классов 222 объекта анимации метод GetValue получает переданное в качестве аргумента базовое значение и возвращает значение, основанное на вычислении определения внутреннего модификатора для значения хода выполнения.
В заключение, структура класса анимации поддерживает набор событий. Флаг 430 события Changed (Изменено) активируется каждый раз, когда изменяется внутреннее состояние объекта анимации. Флаг 430 события Changed используется для индикации того, что необходимо повторное воспроизведение (что-то изменилось в позиции или размере). Сигнал события Begun (Начато) активируется, когда объект входит в период, в котором его внутреннее состояние изменяется непрерывно. Сигнал события Ended (Закончено) активируется каждый раз, когда объект выходит из периода, когда внутреннее состояние изменяется непрерывно. Событие Repeated (Повторяется) активируется каждый раз, когда временная шкала объекта анимации повторяет свою элементарную длительность. Событие Reversed (обращено) активируется каждый раз, когда на временной шкале объекта анимации изменяется направление времени. События Paused (Приостановлено), Resumed (Возобновлено) и Seeked (выполнен поиск) активируются в ответ на выполнение соответствующего метода Pause, Resume и Seek на временной шкале объекта анимации.
Согласно фиг.5 определен набор режимов объекта анимации. Каждый из определенных режимов соответствует конкретному классу конструктора, который соответственно поддерживается каждым из типов класса анимации, перечисленных здесь выше. Тип 500 конструктора From (От) создает объект анимации, который берет в качестве своего исходного значения переданное в качестве аргумента значение "From" и по ходу выполнения доходит до базового значения, заданного для соответствующего свойства. Тип 510 конструктора To (До) создает объект анимации, который в качестве исходного значения берет базовое значение, заданное для соответствующего свойства и по ходу выполнения доходит до переданного в качестве аргумента значения "To". Тип 520 конструктора "From-To" (От-До) получает переданные в качестве аргумента параметры, обозначающие значения свойства From и To для объекта анимации, при этом в продолжении анимации не используется базовое значение для свойства анимированного элемента. Однако, когда последовательность анимации заканчивается, свойство элемента возвращается к базовому значению, кроме случая, где свойство Fill временных характеристик для объекта анимации установлено в "Freeze".
Границы значения анимации могут быть установлены посредством конечной точки и значения величины изменения (дельты), вместо установки оконечных точек для анимации. Конструктор 530 By (На) получает значение дельты, запускает анимацию при базовом значении и выполняет изменение базового значения на величину, определенную значением дельты, в продолжение цикла анимации. Конструктор 540 "From-By" (От-На) получает в качестве входных данных начальное значение "From" и выполняет изменение начального значения "From" на переданное в качестве аргумента значение дельты в продолжение цикла анимации. Описав базовый набор конструкторов для объектов анимации, следует отметить, что настоящее изобретение предполагает широкое многообразие режимов анимации (и соответствующих конструкторов), включая комбинации/объединения вышеупомянутых режимов.
Описав иллюстративную структуру классов анимации, теперь необходимо рассмотреть контейнер объектов анимации, т.е. классы 224 коллекции анимаций. Фиг.6 иллюстрирует возможную структуру для класса коллекции анимаций. Объекты коллекции анимаций поддерживают список объектов анимации, экземпляры которых созданы из классов 224 анимации. Далее описан набор методов 600, поддерживаемых классами коллекции анимаций, метод GetUniqueInstance возвращает экземпляр коллекции анимаций с заданной по умолчанию родительской временной шкалой, соответствующей переданному в качестве аргумента идентификатору временной шкалы. Класс коллекции анимаций также поддерживает интерфейс для установки свойства DefaultParentTimeline (Родительская временная шкала, установленная по умолчанию) для класса коллекции анимаций. В иллюстративном варианте осуществления изобретения система 220 свойств вызывает метод GetUniqueInstance для получения копии конкретной коллекции анимаций для объекта динамической коллекции анимаций. Объект коллекции анимаций содержит список объектов анимации. Функция/объект-формирователь добавляет объекты анимации к созданному экземпляру коллекции анимаций. Объекты анимации внутри коллекции анимаций индексируются и обращение/доступ к ним осуществляется посредством определения конкретной позиции внутри списка (как в массиве).
Метод GetValue берет в качестве входных данных базовое значение некоторого типа и возвращает другое значение того же типа, что и входное базовое значение. Значение выходных данных зависит как от входных данных (базовое значение), так и от внутреннего состояния модификатора (например, объект анимации/коллекция анимаций), к которому они передаются в качестве аргумента. В частности, это означает, что при вызове GetValue с одинаковыми входными данными более одного раза, не гарантируется, что будут возвращены одинаковые выходные данные, и в действительности ожидается их изменение по ходу последовательности анимации. В случае класса коллекции анимаций, метод GetValue обеспечивает передаваемое базовое значение для первого объекта анимации в коллекции. Выходные данные первого объекта анимации становятся входным базовым значением для следующего объекта анимации (если существует) в коллекции анимаций. Этот процесс повторяется, пока не будут вычислены выходные данные последнего объекта анимации в коллекции анимаций. Метод GetValue возвращает выходное значение, обеспеченное последним объектом анимации внутри конвейера объектов анимации внутри коллекции анимаций.
Класс коллекции анимаций также включает в себя набор свойств 610. Свойство IsChanging и свойство IsOverridingBaseValue аналогичны свойствам с соответствующими именами для объектов анимации. Однако, в случае класса коллекции анимаций, свойства объединяются так, что если любое из соответствующих свойств объекта анимации возвращает "True", то соответствующее свойство для коллекции анимаций возвращает "True". Свойство Animations(array) (Анимации(массив)) поддерживает список объектов анимации внутри коллекции анимаций.
Коллекция анимаций также поддерживает набор событий 620. События Changed объединяют соответствующие события, описанные здесь выше, запускаемые из объектов анимации, составляющих коллекцию анимаций, и оповещают о них.
Согласно фиг.7 определен набор методов и свойств для класса 226 динамической коллекции анимаций. Набор методов 700 включает в себя метод Constructor (конструктор) динамической коллекции анимаций. Метод конструктор динамической коллекции анимаций получает в качестве входных данных ссылку на элемент (для дерева 202 элементов), динамическое свойство для этого элемента и экземпляр коллекции анимаций, причем конструктор возвращает объект динамической коллекции анимаций, который функционирует, как интерфейс между изменениями, индуцированными временной шкалой, в отношении объектов анимации внутри переданного в качестве аргумента объекта коллекции анимаций, и динамическим свойством для элемента, содержащегося в дереве 202 элементов.
Интерфейс объекта динамической коллекции анимаций поддерживает установку/получение объекта коллекции анимаций, с которым ассоциативно связан объект динамической коллекции анимаций. Метод SetDefaultParentTimeline (Установить по умолчанию родительскую временную шкалу) восстанавливает связи временных шкал в контексте события, состоящего в перемещении в дереве 202 элементов элемента, к которому присоединен объект динамической коллекции анимаций, или при ином изменении временных характеристик для этого элемента.
Метод GetValue возвращает текущее значение для анимированного свойства элемента (обеспечивается коллекцией анимаций, к которой присоединена динамическая коллекция анимаций).
Метод OnChanged (При изменении) вызывается, когда изменяется ход выполнения любого объекта анимации внутри коллекции анимаций. При вызове метод OnChanged приводит к тому, что динамическое свойство становится недействительным. Это в свою очередь вызывает повторное воспроизведение элементов, на которые это оказало воздействие.
В отношении свойств 710, свойство OriginalDynamicProperty (Исходное динамическое свойство) возвращает ссылку на динамическое свойство, с которым динамическая коллекция анимаций связана. Свойство Element (Элемент) возвращает элемент, с которым динамическая коллекция анимаций связана. Свойство IsOverridingBaseValue возвращает значение, основанное на вызове свойства с соответствующим именем для коллекции анимаций, с которой оно связано.
После описания архитектуры анимации, далее в качестве примера описано использование этой архитектуры для анимации свойств элементов посредством задания им изменяющихся во времени значений. В общем, каждый анимированный ресурс, метод или объект включает в себя интерфейс, обеспечивающий возможность уведомления о возможностях анимации сущности, ее родительской временной шкале, заданной по умолчанию, о том, изменилась ли она, о текущем значении объекта, и о том, изменяется ли эта сущность. В качестве конкретного примера, интерфейс анимируемой сущности включает в себя свойство DoesChange (Возможность изменения), которое возвращает True, если объект может изменяться во времени. В основном, свойство DoesChange истинно, если объект содержит любые коллекции анимаций. Свойство DefaultParentTimeline возвращает ссылку на временную шкалу, которая является родителем любых автоматически порождаемых временных шкал. Если установлено свойство DefaultParentTimeline, то любые автоматически порождаемые временные шкалы порождаются повторно, но при этом не создается новый клон ни для временных шкал, ни для этого анимируемого объекта. Свойство IsChanging возвращает True, если изменяется любая из анимаций в анимируемом объекте. Свойство IsOverridingBaseValue возвращает True, если любая временная шкала анимируемого объекта активна или находится в периоде исполнения, Событие Changed активируется каждый раз, когда изменяется значение анимируемой сущности.
Дополнительно, анимируемая сущность включает в себя метод CurrentValue, который возвращает объект, используемый как значение свойства. Это значение является мгновенным значением объекта, но, будучи установленным, оно не изменяется. Метод GetUniqueInstance, устанавливающий конкретную временную шкалу, возвращает объект, который может использоваться как значение свойства. Если объект ссылается на любые автоматически порождаемые временные шкалы, то возвращаемый экземпляр имеет те временные шкалы, родителем которых является заданная по умолчанию родительская временная шкала.
Анимируемая сущность также задает для каждого анимируемого свойства соответствующую ссылку на тип коллекции анимаций, чтобы способствовать созданию системой свойств динамической коллекции анимаций. В варианте осуществления изобретения, предпочтительно, используются коллекции анимаций, а не базисные объекты анимации, так как такое использование может препятствовать композиции анимации.
Анимация ресурсов осуществляется посредством добавления коллекций анимаций к отдельным свойствам. Следующий пример показывает, как создать SolidColorBrush с анимацией цвета.
Ресурсы анимации могут использоваться в операциях воспроизведения, или как значения для свойств элемента. Операция воспроизведения анимируется, например, посредством добавления коллекций анимаций к вызовам контекстных методов рисования, или посредством использования ресурсов анимации. Следующий пример показывает, как поместить значение анимированной непрозрачности
в контекст рисования.
Элементы могут быть анимированы посредством добавления коллекций анимаций к свойствам элемента. Следующий пример показывает, как анимировать ширину кнопки на языке программирования C sharp.
Ниже приведен этот же пример на расширяемом языке разметки приложений XAML.
Каждый раз, когда используется анимация (или анимированный ресурс), эта анимация (или ресурс) клонируется для обеспечения адресата информации уникальной, независимо управляемой временной шкалой. Следствием этого конкретного способа реализации анимации для свойства является то, что исходная анимация никогда не является частью визуальной сцены, и, следовательно, она не отвечает на управляющие вызовы через интерфейс временных характеристик объекта анимации. Для достижения этого эффекта вызывающий код сначала должен использовать анимацию и затем считать анимацию обратно. Значение, которое считывается обратно, может затем кэшироваться и использоваться для управления временными характеристиками. Следующий пример показывает образец, код которого предназначен для управления анимациями:
Для специалистов в данной области техники очевидно, что включенные в описание новая иллюстративная платформа и иллюстративные интерфейсы, классы и структуры, были описаны для присоединения и выполнения режимов анимации для элементов графического изображения внутри вычислительной среды, содержащей графические устройства вывода, например дисплей графического пользовательского интерфейса. Учитывая наличие многих возможных сред, в которых могут быть использованы принципы этого изобретения, и гибкость проектирования и выполнения описанной выше архитектуры анимации, следует иметь в виду, что описанные здесь варианты осуществления являются иллюстративными и не должны восприниматься как ограничивающие объем изобретения. Для специалистов в данной области техники, к которым обращено настоящее изобретение, должно быть очевидно, что, не удаляясь от сущности изобретения, варианты осуществления, представленные в иллюстративной форме, могут быть изменены в отношении конфигурации и деталей. Вследствие этого, описанное здесь изобретение подразумевает все такие варианты осуществления, которые охватываются объемом, определяемым нижеследующей формулой изобретения и ее эквивалентами.
Класс G06T13/00 Анимационные эффекты в двухмерных изображениях, например с использованием спрайтов, (элементов динамического графического отображения )
Класс G06F3/14 вывод цифровых данных на индикаторные приборы