плавные переходы между анимациями
Классы МПК: | G06T13/00 Анимационные эффекты в двухмерных изображениях, например с использованием спрайтов, (элементов динамического графического отображения ) |
Автор(ы): | НЕЛЬСОН Элизабет К. (US), ДЖЭКОБ Курт Б. (US), КЭЛКИНС Мэтт (US), ХИЛЛБЕРГ Майкл Дж. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2006-07-11 публикация патента:
10.06.2011 |
Изобретение относится к способам перехода между анимациями визуальных элементов пользовательского интерфейса. Техническим результатом является увеличение качества и целостности визуализации анимации. Способ включает: запуск первой анимации элемента пользовательского интерфейса, причем первая анимация включает в себя регулировку значения свойства первого элемента, при этом свойство является свойством размера, которое воздействует на размер элемента во время регулировки значения; установку режима передачи, который определяет, какие действия предпринять, когда вторая анимация запущена, а первая анимация все еще регулирует значение свойства размера элемента; обнаружение сигнала запуска второй анимации во время выполнения первой анимации, причем первая и вторая анимации регулируют значение свойства размера элемента, причем сигнал запуска представляет собой событие, генерируемое в ответ на взаимодействие пользователя с элементом; повторно вычисляют значение свойства элемента пользовательского интерфейса во время выполнения первой анимации; сохраняют повторно вычисленное значение свойства всякий раз, когда значение повторно вычисляется; и инициируют выполнение второй анимации с помощью заданного режима передачи. 5 н. и 14 з.п. ф-лы, 10 ил., 1 табл.
Формула изобретения
1. Реализуемый на компьютере способ перехода между первой анимацией элемента пользовательского интерфейса и второй анимацией элемента пользовательского интерфейса, причем способ содержит этапы, на которых:
запускают первую анимацию элемента пользовательского интерфейса, причем первая анимация пользовательского интерфейса включает в себя регулировку значения свойства первого элемента пользовательского интерфейса, при этом свойство является свойством размера, которое воздействует на размер элемента пользовательского интерфейса во время регулировки значения;
устанавливают режим передачи, который определяет, какие действия предпринять, когда вторая анимация запущена, а первая анимация все еще регулирует значение свойства размера элемента пользовательского интерфейса;
обнаруживают сигнал запуска для второй анимации в то время, как выполняется первая анимация, причем первая и вторая анимации регулируют значение свойства размера элемента пользовательского интерфейса, причем сигнал запуска представляет собой событие, генерируемое в ответ на взаимодействие пользователя с элементом пользовательского интерфейса;
повторно вычисляют значение свойства элемента пользовательского интерфейса во время выполнения первой анимации;
сохраняют повторно вычисленное значение свойства всякий раз, когда значение повторно вычисляется; и
инициируют выполнение второй анимации с помощью заданного режима передачи, включающего в себя использование повторно вычисленного значения.
2. Способ по п.1, дополнительно содержащий этап, на котором назначают объект памяти анимации для упомянутого свойства, причем объект памяти анимации должен сохранять значение свойства, являющееся результатом выполнения первой и второй анимаций.
3. Способ по п.1, в котором режим передачи выбирается из одного из следующего:
режима передачи с компоновкой, который указывает, что первая анимация продолжается, и для каждого цикла визуализации первой анимации вторая анимация использует выходное значение первой анимации в качестве своего «отправного» значения, причем выходное значение второй анимации используется в качестве значения для визуализации свойства;
режима передачи с замещением, указывающего, что первая анимация сбрасывается, а вторая анимация использует базовые «конечное» и «отправное» значения, когда «конечное» и «отправное» значения не заданы;
режима передачи с мгновенным снимком и замещением, указывающего, что текущее значение свойства первой анимации получено, и первая анимация сброшена, и что вторая анимация использует полученное текущее значение в качестве «отправного» значения и базовое значение для «конечного» значения, если оно не задано;
режима передачи с мгновенным снимком и сохранением, указывающего, что текущее значение свойства первой анимации получено, и первая анимация продолжает выполняться без изменения значения свойства; вторая анимация использует полученное текущее значение в качестве «отправного» значения и базовое значение для «конечного» значения, если оно не задано; когда вторая анимация заканчивается, то первая анимация возобновляет анимацию свойства;
режима передачи с мгновенным снимком и сохранением/паузой, указывающего, что текущее значение свойства первой анимации получено, и первая анимация приостановлена; вторая анимация использует мгновенный снимок полученного текущего значения в качестве «отправного» значения и базовое значение для «конечного» значения, если оно не задано; когда вторая анимация заканчивается, то первая анимация анимирует свойство из приостановленного состояния первой анимации;
режима передачи с плавным переходом, предписывающего использовать взвешенное среднее первой анимации и второй анимации; и
режима передачи с очередью, предписывающего помещать отложенные анимации в очередь до тех пор, пока имеющиеся анимации не закончатся.
4. Способ по п.1, дополнительно содержащий этап, на котором разрешают выполнение первой анимации без воздействия на значение упомянутого свойства, когда выполняется вторая анимация.
5. Способ по п.1, дополнительно содержащий этап, на котором приостанавливают выполнение первой анимации, когда выполняется вторая анимация.
6. Способ по п.1, в котором анимации для свойства логически организованы на множестве уровней, причем уровень может быть избирательно удален, если все анимации на этом уровне завершились.
7. Способ по п.1, дополнительно содержащий этап, на котором обнаруживают сигнал запуска для третьей анимации, когда выполняется вторая анимация, причем первая и вторая анимации являются частью одного уровня, а третья анимация является частью другого уровня, при этом значение упомянутого свойства, являющееся результатом второй анимации, используется в качестве «отправного» значения для третьей анимации, а значение упомянутого свойства, являющееся результатом третьей анимации, должно быть использовано в качестве значения визуализации для упомянутого свойства при визуализации визуального объекта.
8. Машиночитаемый носитель, на котором хранятся команды, которые, при их выполнении компьютером, реализуют способ по п.1.
9. Система для обработки первой анимации и второй анимации, причем система содержит:
систему свойств для хранения значений для свойств визуальных объектов, подлежащих отображению;
графическую подсистему для предоставления данных, используемых для отображения визуальных объектов через устройство отображения; и
анимационную систему для вычисления ряда значений свойства визуального объекта, используемых при анимации визуального объекта, когда он отображается через устройство отображения, причем свойство является свойством размера, которое воздействует на размер визуального объекта, когда значение свойства размера регулируется во время анимации, при этом анимационная система должна обнаруживать сигнал запуска для второй анимации, когда выполняется первая анимация, причем сигнал запуска представляет собой событие, генерируемое в ответ на взаимодействие пользователя с визуальным объектом; повторно вычислять значение свойства во время выполнения первой анимации, сохранять повторно вычисленное значение свойства, являющееся результатом выполнения первой анимации, и запускать вторую анимацию, используя сохраненное повторно вычисленное значение упомянутого свойства в качестве «отправного» значения, причем «отправное» значение является точкой запуска второй анимации, и при этом первая анимация и вторая анимация являются анимациями визуального объекта в графическом пользовательском интерфейсе.
10. Система по п.9, в которой анимационная система должна назначать объект памяти анимации для упомянутого свойства, причем объект памяти анимации должен сохранять значение упомянутого свойства, являющееся результатом выполнения первой и второй анимаций.
11. Система по п.9, в которой анимационная система должна сбрасывать первую анимацию, когда запущена вторая анимация.
12. Система по п.9, в которой анимационная система должна разрешать выполнение первой анимации без воздействия на значение упомянутого свойства, когда выполняется вторая анимация.
13. Система по п.9, в которой анимационная система должна приостанавливать выполнение первой анимации, когда выполняется вторая анимация.
14. Система по п.9, в которой анимационная система должна получать, по меньшей мере, одно базовое значение для упомянутого свойства из системы свойств до выполнения первой анимации.
15. Система по п.9, в которой анимационная система должна обнаруживать сигнал запуска для третьей анимации, когда выполняется вторая анимация, причем первая и вторая анимации являются частью одного уровня, а третья анимация является частью другого уровня, и при этом значение упомянутого свойства, являющееся результатом второй анимации, используется в качестве «отправного» значения для третьей анимации, а значение упомянутого свойства, являющееся результатом третьей анимации, должно быть использовано в качестве значения визуализации для упомянутого свойства при визуализации визуального объекта.
16. Реализуемый на компьютере способ анимации визуального элемента, причем способ содержит этапы, на которых:
определяют набор запускаемых анимаций для визуального элемента, отображаемого на графическом пользовательском интерфейсе, причем набор включает в себя первый поднабор из одной или нескольких запускаемых анимаций и один или несколько других поднаборов запускаемых анимаций, причем каждая из запускаемых анимаций первого поднабора запускается либо сигналом запуска события, либо сигналом запуска свойства, генерируемыми в ответ на взаимодействие пользователя с визуальным элементом, причем каждая из запускаемых анимаций одного или нескольких других поднаборов запускается сигналом запуска свойства, генерируемым в ответ на взаимодействие пользователя с визуальным элементом,
повторно вычисляют значение свойства размера во время каждой анимации, которое воздействует на размер визуального элемента при повторном вычислении,
сохраняют повторно вычисленное значение, и
используют повторно вычисленное значение для определения «отправного» положения, с которого необходимо начинать следующую анимацию, и
причем для перехода от анимации из одного поднабора к анимации из другого поднабора используется режим передачи с компоновкой.
17. Способ по п.16, в котором вторая анимация из одного из поднаборов набора, будучи запущенной, избирательно инициирует получение мгновенного снимка со значением свойства, установленным под воздействием первой анимации этого поднабора, причем первая анимация выполняется, когда запущена вторая анимация.
18. Способ по п.17, в котором первая анимация сбрасывается, когда запущена вторая анимация.
19. Машиночитаемый носитель, на котором хранятся команды, которые при их выполнении компьютером реализуют способ по п.16.
Описание изобретения к патенту
Уровень техники
В некоторых интерактивных системах могут быть реализованы визуальные элементы, которые реагируют созданием анимаций в ответ на действия пользователя. Например, кнопка, отображаемая на пользовательском интерфейсе (UI), может быть реализована таким образом, что она будет увеличиваться или уменьшаться в размерах либо поворачиваться и т.д., когда пользователь наводит на нее курсор. В некоторых ситуациях оказывается, что необходимо иметь множество анимаций, выполняемых на одном визуальном элементе. В некоторых системах возможно появление «дергания» отображения визуального элемента, когда выполняемая текущая анимация визуального элемента переходит в другую анимацию, что может оказаться неприемлемым в некоторых сценариях. Информация, представленная в этом разделе, не предназначена для идентификации проблем, которые должны быть разрешены с помощью заявленного предмета изобретения.
Раскрытие изобретения
В этом разделе в упрощенной форме предлагаются концепции, которые детально раскрываются ниже в разделе, содержащем подробное описание изобретение. Материал этого раздела не предназначен для идентификации ключевых признаков и существенных признаков заявленного предмета изобретения и не предполагается, что он поможет определить объем заявленного предмета изобретения.
Технический результат, на достижение которого направлено настоящее изобретение, состоит в увеличении качества и целостности визуализации анимации и, в частности, переходов между анимациями.
Согласно аспектам описанных здесь различных вариантов изобретения предложены варианты осуществления, обеспечивающие плавные переходы между развитыми медиа (например, между анимациями визуальных элементов пользовательского интерфейса UI). Согласно одному аспекту, когда анимация начинается для свойства визуального элемента, для которого уже выполняется другая анимация, эта «вторая» анимация может быть сконфигурирована таким образом, чтобы запоминалось текущее значение свойства, являющееся результатом выполнения «первой» анимации (то есть моментальный снимок), сбрасывалась первая анимация, а затем выполнялась вторая анимация с использованием моментального снимка в качестве «отправного» значения данного свойства. Этот режим передачи называют режимом «моментальный снимок и замещение». Поскольку вторая анимация «запускается» точно в тот момент, в который закончилась первая анимация, переход между первой и второй анимациями получается плавным.
Согласно другому аспекту создается объект памяти анимации для того свойства, для которого была запущена анимация. Объект памяти анимации предназначен для сохранения одного или нескольких базовых значений свойства, запланированного для анимации, и, вдобавок, любых моментальных снимков этого свойства, если другая анимация запускается в то время, когда все еще продолжается первоначальная анимация.
Согласно еще одному аспекту изобретения для некоторого свойства может быть использовано множество уровней анимации, причем переходы между уровнями осуществляются в режиме передачи типа «компоновка». В некоторых вариантах осуществления переход между анимациями на одном уровне может осуществляться в режиме, «компоновки» или режиме типа «моментальный снимок и замещение». В других вариантах осуществления переход между анимациями между уровнями может осуществляться в режиме «компоновки» или режиме типа «моментальный снимок и замещение».
Варианты изобретения могут быть реализованы в виде компьютерного процесса, компьютерной системы (включая мобильные карманные вычислительные устройства) или в виде производственного изделия, такого как компьютерный программный продукт. Компьютерный программный продукт может представлять собой компьютерный носитель, считываемый компьютерной системой, где закодирована компьютерная программа, состоящая из команд для выполнения компьютерного процесса. Компьютерный программный продукт может также представлять собой сигнал, распространяемый на несущей, который считывается вычислительной системой и в котором закодирована компьютерная программа, состоящая из команд для выполнения компьютерного процесса.
Краткое описание чертежей
Неограничивающие и неисчерпывающие варианты изобретения описаны со ссылками на нижеследующие чертежи, где одинаковые ссылочные позиции относятся к одинаковым частям на различных видах, если не определено иное.
Фиг.1 - блок-схема, представляющая примерную компьютерную систему, в которую могут быть включены различные варианты изобретения;
фиг.2 - блок-схема, представляющая архитектуру уровня медийной интеграции согласно варианту изобретения;
фиг.3 - представление компоненты для интерпретации кода на языке разметки, для взаимодействия с уровнем визуального API согласно варианту изобретения;
фиг.4 и 5 - блок-схемы, представляющие в целом двухуровневую архитектуру, имеющую компоненты временных соотношений для преобразования данных о свойствах тактовых сигналов в интервалы для использования при определении данных о ходе процесса согласно варианту изобретения;
фиг.6 - блок-схема, представляющая в целом систему для создания плавных переходов между развитыми медиа согласно варианту изобретения;
фиг.7 - блок-схема, представляющая в общем виде последовательность шагов при выполнении операции передачи согласно варианту изобретения;
фиг.8 - представление перехода между двумя анимациями с использованием операции передачи согласно варианту изобретения;
фиг.9 - представление взаимосвязей между анимациями на разных уровнях согласно варианту изобретения;
фиг.10 - представление компоновки из двух анимаций согласно варианту изобретения.
Осуществление изобретения
Различные варианты изобретения более подробно описаны ниже со ссылками на сопроводительные чертежи, которые составляют часть описания и демонстрируют конкретные варианты практического осуществления изобретения, приведенные в качестве примера. Однако варианты изобретения можно реализовать во многих различных видах, причем их не следует рассматривать как ограничение по отношению к изложенным здесь вариантам; скорее указанные варианты предложены для того, чтобы заявочное описание изобретения стало исчерпывающим и завершенным и дало возможность специалистам в данной области техники уяснить объем изобретения. Варианты изобретения можно практически реализовать в виде способов, систем или устройств. Соответственно, варианты изобретения могут быть реализованы в аппаратном виде, целиком в программном виде или в виде, в котором скомбинированы программные и аппаратные аспекты. Таким образом, нижеследующее подробное описание не следует рассматривать как ограничение.
Логические операции в различных вариантах изобретения реализуются: (1) в виде последовательности реализуемых компьютером шагов, выполняющихся в вычислительной системе, и/или (2) в виде взаимосвязанных машинных модулей в вычислительной системе. Та или иная реализация выбирается в зависимости от требований к рабочим характеристикам вычислительной системы, реализующей данный вариант. Соответственно, логические операции, реализующие описанные здесь варианты, называют либо операциями, либо шагами, либо модулями.
Примерная операционная среда
На фиг.1 показан пример подходящей вычислительной среды 100, в которой могут быть реализованы плавные переходы между анимациями. Среда 100 вычислительной системы является лишь одним примером подходящей вычислительной среды, и ее не следует рассматривать как какое-либо ограничение в смысле объема использования или функциональных возможностей изобретения. Вычислительную среду 100 не следует интерпретировать в том смысле, что она каким-либо образом зависит или предъявляет требования к какому-либо одному компоненту или их комбинации, показанной в примерной вычислительной среде 100.
Изобретение может работать с множеством других сред или конфигураций вычислительных систем общего или специального назначения. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, которые могут с успехом быть использованы с данным изобретением, включают в себя, но не только: персональные компьютеры, компьютеры-серверы, карманные устройства или лэптопы, планшетные устройства, микропроцессорные системы, системы на основе микропроцессора, компьютерные приставки, электронную аппаратуру, программируемую пользователем, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любую из вышеуказанных систем или устройств, и т.п.
Изобретение может быть описано в общем контексте выполняемых компьютером команд, таких как программные модули, выполняемые компьютером. В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные типы абстрактных данных. Изобретение также можно практически реализовать в распределенных вычислительных средах, где задачи выполняются удаленными обрабатывающими устройствами, связанными через сеть связи. В распределенной вычислительной среде программные модули могут находиться как на местном, так и на удаленном компьютерном носителе, включая устройства памяти.
Как показано на фиг.1, примерная система для осуществления изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не только: блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с блоком 120 обработки. Системная шина 121 может представлять собой любую из шинных структур нескольких типов, в том числе шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества различных шинных архитектур. Такие архитектуры могут, например, включать в себя, но не только: архитектуру промышленного стандарта (ISA), микроканальную архитектуру (MCA), расширенную архитектуру ISA (EISA), локальную шину Ассоциации по стандартам видеооборудования (VESA), шину ускоренного графического порта (AGP) и шину межсоединений периферийных компонентов (PCI) (известную так же, как шина Mezzanine).
Компьютер 110 обычно включает в себя множество различных считываемых компьютером сред (носителей). Считываемые компьютером носители могут представлять собой любые имеющиеся носители, которые могут быть доступны компьютеру 110 и могут включать в себя как энергозависимые, так и энергонезависимые носители, а также как съемные, так и несъемные носители. В качестве примера, но не как ограничение, считываемые компьютером среды могут содержать компьютерные запоминающие среды и среды связи. Компьютерные запоминающие среды включают в себя энергозависимые и энергонезависимые, съемные и несъемные среды, реализованные любым способом или по любой технологии для сохранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или другие данные. Компьютерные запоминающие среды включают в себя, но не только: ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память, либо память, выполненную по другой технологии, ПЗУ на компакт-диске (CD ROM), цифровые универсальные диски (DVD) либо другое запоминающее устройство на оптическом диске, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, либо любую другую среду, которую можно использовать для сохранения требуемой информации и которая может быть доступна компьютеру 110. Среды связи обычно несут считываемые компьютером команды, структуры данных, программные модули либо другие данные в модулированном сигнале данных, таком как сигнал несущей или другой механизм транспортировки, и включают в себя любые среды для доставки информации. Термин «модулированный сигнал данных» означает сигнал, имеющий одну или несколько характеристик, установленных или измененных таким образом, чтобы закодировать информацию в этом сигнале. Например, но не как ограничение, среда связи включает в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная (RF), инфракрасная и другие беспроводные среды. В состав считываемых компьютером сред также следует включить комбинации из любых вышеперечисленных сред.
Системная память 130 включат в себя компьютерную запоминающую среду в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство 131 (только для считывания) (ROM) и оперативное запоминающее устройство 132 (с произвольной выборкой) (RAM). В памяти ROM 131 обычно находится базовая система 133 ввода/вывода (BIOS), содержащая базовые подпрограммы, которые помогают пересылать информацию между элементами в компьютере 110, например, во время запуска. Память RAM 132 обычно содержит данные и/или программные модули, которые непосредственно доступны и/или обрабатываются в настоящий момент в блоке 120 обработки. На фиг.1 в качестве примера, но не как ограничение, показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие среды. Только в качестве примера на фиг.1 показаны: накопитель 141 на жестком диске, который осуществляет считывание или запись на несъемный, энергонезависимый магнитный носитель; накопитель 151 на магнитном диске, который осуществляет считывание или запись на съемный энергонезависимый магнитный диск 152; и дисковод 155 на оптическом диске, который осуществляет считывание или запись на съемный энергонезависимый оптический диск 156, такой как CD ROM либо другую оптическую среду. Другие съемные/несъемные энергозависимые/ энергонезависимые компьютерные запоминающие среды, которые можно использовать в приведенной в качестве примера операционной среде, включают в себя, но не только: кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, твердотельное RAM, твердотельное ROM и т.п. Накопитель 141 на жестком диске обычно подсоединен к системной шине 121 через интерфейс несъемной памяти, такой как интерфейс 140, а накопитель 151 на магнитном диске и накопитель 155 на оптическом диске обычно подсоединены к системной шине 121 через интерфейс съемной памяти, такой как интерфейс 150.
Накопители и связанные с ними компьютерные запоминающие среды, обсужденные выше и показанные на фиг.1, обеспечивают сохранение считываемых компьютером команд, структур данных, программных модулей и других данных для компьютера 110. На фиг.1 в качестве примера показано, что в накопителе 141 на жестком диске хранятся операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут совпадать либо отличаться от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 имеют здесь другие цифровые обозначения, чтобы показать, что они, как минимум, являются разными копиями. Пользователь может ввести в компьютер 110 команды и информацию через устройства ввода, такие как планшет (электронный дигитайзер) 164, микрофон 163, клавиатура 162 и указательное устройство 161, известное как «мышь», шаровой манипулятор или сенсорный планшет. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровую приставку, спутниковую антенну, сканер или т.п. Эти и другие устройства ввода часто подсоединены к блоку 120 обработки через входной интерфейс 160 пользователя, который соединен с системной шиной, но могут быть подсоединены с помощью других интерфейсных и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). К системной шине 121 через интерфейс, такой как видеоинтерфейс 190, также подсоединен монитор 191 либо устройство отображения другого типа. Монитор 191 также может составлять единое целое с панелью 193 с сенсорным экраном или т.п., с которой можно вводить оцифрованные входные данные, такие как рукописный текст, в компьютерную систему 110 через интерфейс, например, интерфейс 192 с сенсорным экраном. Заметим, что монитор и/или панель с сенсорным экраном могут быть физически связаны с корпусом, в котором размещено вычислительной устройство 110, например, в персональном компьютере планшетного типа, где панель 193 с сенсорным экраном по существу исполняет роль планшета 164. Вдобавок, компьютеры, такие как вычислительное устройство 110, могут также включать в себя другие периферийные устройства вывода, такие как динамики 195 и принтер 196, которые могут быть подсоединены через периферийный интерфейс 194 вывода или т.п.
Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер, равноправное устройство либо другой известный сетевой узел, причем такой компьютер обычно включает в себя многие или все элементы, описанные выше в связи с компьютером 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. Очевидно, что показанные сетевые соединения являются лишь примерами и что можно использовать другие средства для установления линии связи между компьютерами.
Примерная архитектура
Один аспект изобретения в общем случае имеет своей целью обеспечение плавных смешанных анимаций и/или медиа в компьютерных системах. Исходя из этой цели предложена архитектура 200 медийной интеграции, представленная в целом на фиг.2. Прикладная программа 202, управляющий элемент или аналогичный программный код высокого уровня (например, пользовательский интерфейс компоненты операционной системы) обращается к архитектуре 200 уровня медийной интеграции через набор 204 интерфейсов прикладного программирования (API) или т.п. для доступа (записи или считывания) к графической информации. Заметим, что, хотя множество описанных здесь примеров будет относиться к прикладной программе, взаимодействующей с интерфейсами API, понятно, что для взаимодействия с описанными здесь компонентами низкого уровня также могут быть использованы другой программный код и компоненты высокого уровня (например, пользовательский интерфейс операционной системы). Раз так, то любую ссылку на указанный программный код высокого уровня, независимо от того, относится ли это к прикладной программе, пользовательскому интерфейсу и т.п., следует рассматривать как эквивалентную.
В одном варианте осуществления архитектура 200 медийной интеграции включает в себя механизм 206 компоновки и анимации высокого уровня, компоненты 208 временных соотношений и анимации и механизм 210 компоновки и анимации низкого уровня Используемые здесь термины «высокого уровня» и «низкого уровня» аналогичны терминам, используемым в других вычислительных сценариях, где в общем случае, чем ниже программная компонента относительно компоненты более высокого уровня, тем ближе эта компонента к аппаратным средствам. Таким образом, например, графическая информация, посылаемая от механизма компоновки и анимации высокого уровня, может приниматься в механизме компоновки и анимации низкого уровня, где эта информация используется для пересылки графических данных в графическую подсистему, включающую в себя аппаратные средства.
В общем случае механизм 206 компоновки и анимации высокого уровня (также называемый здесь компоновщиком и аниматором высокого уровня или механизмом или компонентой высокого уровня) выстраивает дерево элементов отображения для представления графической сцены, обеспечиваемой прикладной программой 202, в то время компоненты синхронизации и анимации обеспечивают декларативную (или иную) анимацию и управление синхронизацией. Механизм 210 компоновки и анимации низкого уровня (также называемый здесь компоновщиком и аниматором низкого уровня или механизмом или компонентой низкого уровня) компонует объекты визуализации для сцен множества приложений и, используя компоненты визуализации, реализует действительную визуализацию графики на экране. Заметим, что возможно еще выполнить длительную или специализированную визуализацию на более высоких уровнях и передать ссылки в битовую карту или т.п. для более низких уровней.
Механизм 206 компоновки и анимации высокого уровня выстраивает древовидную структуру элементов и обходит эту структуру, создавая команды визуализации и элементарные анимационные интервалы для их передачи в механизм 210 компоновки и анимации низкого уровня. Команды визуализации, созданные компоновщиком высокого уровня, могут содержать информацию о временных соотношениях и анимации. Механизм 210 компоновки и анимации низкого уровня получает команды визуализации и анимационные интервалы и управляет анимацией, визуализацией и компоновкой сцены, которая затем поступает в графическую подсистему 212 (например, графические программные и аппаратные средства). В альтернативном варианте или вдобавок к локально отображаемому выходу механизм 206 компоновки и анимации высокого уровня (или аналогичный ему механизм) может обеспечить команды визуализации и анимации в подходящем формате для кода 220 печати низкого уровня с целью пересылки фиксированных данных изображения на принтер 202 или т.п. и/или может обеспечить команды визуализации и элементарные анимационные интервалы в подходящем формате для транспортного сервера 226 терминала низкого уровня для передачи на удаленные машины 228. Заметим, что через сеть можно передать более богатую информацию, например, возможно окажется необходимым, чтобы удаленная машина обрабатывала эффекты одновременного нажатия клавиш мыши, без того чтобы обрабатывать сетевой трафик.
Таким образом, в этом варианте осуществления архитектура 200 медийной интеграции разделяет графическую обработку на множество уровней, причем каждый из этих уровней выполняет некоторую интеллектуальную графическую обработку, что в совокупности позволяет интерфейсам 202 прикладного программирования и т.п. выводить графику с плавной анимацией, компоновать эту графику с графикой других приложений и работать с видеокадрами. Анимация и/или компоновка также может быть синхронизирована с аудиовыходом. Например, путем синхронизации аудио с частотой кадров в компоненте низкого уровня временные соотношения аудио могут быть существенно уточнены в соответствии с временными соотношениями видео и графики и не зависеть от того, возможна ли поддержка частоты обновления при выполнении сложной предварительной обработки, запланированной для текущей задачи.
На фиг.3 представлен один вариант осуществления, при котором код 302 разметки, например, код на основе языка XAML, может интерпретироваться синтаксическим анализатором/транслятором 304. В общем случае синтаксический анализатор/транслятор 304 добавляет элементы в систему 314 свойств/дерева элементов; причем эти элементы являются визуальными объектами, которые создают собственное размещение. Кроме того, заметим, что некоторая часть или весь код разметки может быть скомпилирован, а не интерпретирован по требованию, что повышает эффективность.
В общем случае элемент представляет собой объект в уровне элементов, который участвует в функционировании системы свойств, запуска и системы размещения/представления. Синтаксический анализатор 304 находит теги и решает, помогут ли эти теги определить элемент или ресурсный объект. Например, в конкретном случае VisualBrush одни и те же теги могут быть интерпретированы как элементы, а также как ресурсные объекты в зависимости от контекста, в котором эти теги появляются, например, в зависимости от того, появились ли они в комплексном синтаксисе свойств или нет, как описано в патентной заявке США № 10/401717.
Вдобавок к текущему линейному расположению в разметке экземпляр ресурса может находиться в каком-либо другом месте (например, в разметке или в файле, который может быть локальным или находиться в удаленной сети и, соответственно, загружаться), и иметь ссылочное имя (например, текстовое имя, ссылочный или иной подходящий идентификатор). Таким путем разработчик сцены может повторно использовать элемент в дереве элементов по всей сцене, включая элементы, описываемые комплексным синтаксисом свойств. Как будет описано ниже, ресурс может включать в себя раскадровку, что позволяет использовать раскадровки повторно.
Синтаксический анализатор 304 обрабатывает разметку в комплексном синтаксисе свойств путем обращения к преобразователю 308 типов, если это необходимо, а также путем сопоставления заданных параметров со свойствами объекта, что устраняет сложности для разработчика сцены. Таким образом, синтаксический анализатор 304 не только устанавливает объекты, но также устанавливает свойства в этих объектах. Поскольку между уровнем элементов и уровнем API совместно используется одна и та же модель визуализации, множество объектов по существу оказываются одинаковыми. Это делает синтаксический анализ/трансляцию высоко эффективной, а также позволяет использовать различные типы языков программирования (например, языки, подобные С#) легко преобразовывать разметку в собственный синтаксис и наоборот. Заметим, что, как показано на фиг.3, другой указанный язык 310 программирования (который может содержать скомпилированную разметку) может добавить элементы к дереву 314 элементов либо может непосредственно взаимодействовать с уровнем 316 визуального API.
На фиг.3 также показано, что одна и та же разметка 302 может быть использована для программирования на уровне элементов и на уровне ресурсов. В общем случае уровень элементов дает разработчику сцены исчерпывающие возможности программирования, возможность использовать систему свойств, которая обеспечивает наследование (например, функции типа таблицы стилей) и запуск (посредством чего, например, элемент в ответ на событие или действие, введенное пользователем, может присоединить код для изменения своего вида, положения и т.д.). Однако различные варианты изобретения также обеспечивают механизм на уровне ресурсов, с помощью которого разработчики сцен могут по существу укоротить дерево элементов и выполнить программирование непосредственно на уровне визуального API. Для многих типов статических форм, изображений и т.п., где в признаках на уровне элементов нет необходимости, это обеспечивает более эффективный и легкий способ вывода соответствующего объекта.
В целях управления выводом анимации и медиа также поддерживается дерево временных соотношений, содержащее тактовые сигналы, как описывается ниже со ссылками на фиг.4 и 5. В общем случае механизм 206 компоновщика и аниматора высокого уровня выполняет комплексную обработку (иногда называемую компиляцией), которая значительно упрощает обработку и значительно уменьшает объем данных, которые необходимы более низким уровням для визуализации правильного вывода. Однако заметим, что объем и тип обработки, выполняемый на более высоком уровне, может зависеть в значительной степени от нагрузки, конфигурации и возможностей более низких уровней. Например, если имеются высокопроизводительные графические аппаратные средства, то на более высоком уровне возможно выполнение обработки в меньшем объеме и наоборот. Высокие уровни и низкие уровни адаптивны к указанным факторам.
В общем случае анимация осуществляется как механизмом 206 компоновки и анимации высокого уровня, так и механизмом 210 компоновки анимации низкого уровня. В одном варианте осуществления механизм 206 высокого уровня обходит сцену и обновляет параметры анимации с интервалами для последующей интерполяции, а затем пакетирует эти упрощенные структуры данных в команды, которые передаются в механизм 210 низкого уровня. Это может быть выполнено в синхронном и/или асинхронном режиме. Интервальные данные могут рассматриваться в качестве данных, включающих в себя временные конечные точки (данные о моментах начала и окончания интервалов), а также как параметризованные значения для команды визуализации. Заметим, что механизм 204 высокого уровня может выполнять некоторую часть или всю запрошенную интерполяцию; например, если интерполяция или другая функция перемещения слишком сложна для обработки механизмом 210 низкого уровня, или на более низком уровне нельзя поддерживать установленные для этого уровня требования обработки, то механизм более высокого уровня может выполнить некоторые или все вычисления и предоставить более низкому уровню упрощенные данные, мозаичные структуры, команды и т.п., чтобы получить желаемый результат.
В типовом случае, когда на более низком уровне интерполяции выполняются для каждого кадра анимации, механизм 210 низкого уровня интерполирует параметрические интервалы, чтобы получить мгновенные значения, и декодирует команды, получая команды визуализации, выполняемые графическим устройством. Графическое устройство компонует окончательную сцену, добавляя видеокадры, которые могут присутствовать в сцене. Также могут быть добавлены другие данные, такие как контент, защищенный системой цифрового управления авторскими правами.
Механизм 206 высокого уровня, таким образом, обходит структуры данных сцены, вычисляет интервал, описывающий каждый анимационный параметр для некоторого периода времени, и передает эти интервалы и упрощенные параметризованные команды вычерчивания в механизм 210 низкого уровня. Параметрические данные включают в себя начальный момент времени, конечный момент времени, интерполятор и интерполяционные данные. Например, вместо стирания и повторного вычерчивания изображения, с тем чтобы оно казалось движущимся, механизм 206 компоновки и анимации высокого уровня может указать механизму 210 компоновки и анимации низкого уровня, каким образом изображение должно изменяться во времени, например, начальные координаты, конечные координаты, длительность во времени (интервал), в течение которого изображение должно перемещаться между указанными координатами, и функцию движения, например, линейную (заметим, что для анимации не требуется движение, так как стационарный объект может быть анимирован, например, путем изменения его цветности). Механизм 210 компоновки и анимации низкого уровня выполнит интерполяцию, чтобы определить новые положения между кадрами, преобразовать их в команды вычерчивания, которые сможет понять графическое устройство, и передать эти команды в графическое устройство. Каждый прогон механизма 206 высокого уровня предпочтительно обеспечивает такой объем данных для механизма 210 низкого уровня, который будет достаточен для выполнения плавной анимации по нескольким кадрам.
Механизм 210 низкого уровня (например, с высокой тактовой частотой) реализует задачу отдельно от механизма 206 высокого уровня. Механизм 210 низкого уровня получает от механизма 206 высокого уровня упрощенные параметризованные команды вычерчивания и параметрические интервалы, описывающие сцену. Механизм низкого уровня поддерживает и выполняет обход этих структур данных, пока механизм 206 высокого уровня не обеспечит новые структуры данных. Механизм низкого уровня может обслуживать множество механизмов 206 высокого уровня, поддерживая для каждого из них отдельные структуры данных. Взаимосвязь типа «один - множество» между механизмом 210 низкого уровня и механизмом 206 высокого уровня позволяет системе одновременно выполнять плавную анимацию множества сцен.
Механизм 210 низкого уровня по существу интерполирует мгновенные параметры анимации на основе интервалов, обеспеченных механизмом высокого уровня, обновляет команды вычерчивания и визуализирует сцену для каждого кадра. Задача, реализуемая механизмом 210 низкого уровня, выполняется с высоким приоритетом в системе, чтобы обеспечить готовность кадров для представления, например, с частотой обновления экрана графических аппаратных средств. Таким образом, интерполяции, выполняемые механизмом 210 низкого уровня, как правило, ограничиваются простыми, быстро реализуемыми функциями, такими как линейная интерполяция, кусочно-линейная интерполяция, интерполяция на основе пространственных сплайнов и другие виды интерполяции, обеспечивающие аналогичное быстродействие.
Что касается анимации и медиа, то, как в общем виде представлено на фиг.4 и 5, программа, например прикладная программа 202, задает для компоненты 206 высокого уровня значения анимационного свойства вместе с информацией о временных соотношениях, определяемых тактовыми сигналами или характеристиками тактовых сигналов. Как описано ниже, фактически любая независимая анимация или медиа (например, линейные медиа, такие как видео и аудио), а также раскадровка, которая координирует заданные анимации, будет иметь тактовый сигнал, поддерживаемый для этой анимации в компоненте высокого уровня. В общем случае автор задает данные временной шкалы, которые представляют в виде тактовых сигналов, подходящих для поддержки их синхронизации. В некоторых вариантах раскадровка представляет собой временную шкалу, скомпонованную в виде группы или дерева временных шкал. Раскадровка может обеспечить задающую информацию, так что ее дерево временных шкал может задать множество свойств на множестве элементов. Вдобавок, в некоторых вариантах изобретения анимации представляют собой типы временных шкал.
Свойства тактовых сигналов содержат свойства временных соотношений, которые определяют соотношение начальной синхронизации между заданным тактовым сигналом и остальной частью временной структуры. Как показано на фиг.5, компонента 206 высокого уровня может вызвать функции 520Н анимации высокого уровня (например, записанные в управляемом коде, являющемся кодом, который обеспечивает информацию в виде метаданных, позволяющих использовать общеязыковое время прогона, в течение которого выполняется код, реализующий управление), чтобы определить текущее значение некоторого свойства анимации. Во время выполнения вычислений с большой частотой кадров компонента 210 низкого уровня вызывает аналогичные (или те же самые) функции 520L анимации с ходом процесса, вычисленным механизмом 414, чтобы определить текущее значение свойства анимации. Заметим, что в альтернативных вариантах осуществления изобретения функции анимации могут быть встроены, например, в компоненту низкого уровня.
В общем случае анимации и линейные медиа связаны с набором тактовых сигналов, которые связаны друг с другом примитивами и правилами синхронизации. Эти тактовые сигналы могут быть иерархически скомпонованы, например, прикладная программа имеет родительский тактовый сигнал, а анимированные объекты прикладной программы являются дочерними, которые, в свою очередь, могут иметь другие дочерние объекты. При определении или модификации свойства воздействию подвергаются дочерние тактовые сигналы данного тактового сигнала. Например, пауза в родительском тактовом сигнале вызывает паузу в любом из дочерних тактовых сигналов, а удвоение частоты родительского тактового сигнала вызывает удвоение частоты в любом из его дочерних тактовых сигналах.
Эти свойства тактовых сигналов могут модифицироваться исходными событиями, содержащими интерактивные управляющие события, которые инициируются приложением во время его выполнения. Таким образом, тактовые сигналы являются интерактивными в том смысле, что каждый тактовый сигнал может быть индивидуально запущен, временно приостановлен, возобновлен и остановлен приложением произвольное количество раз, например, в ответ на ввод пользователя. Вдобавок, к указанной временной структуре могут быть добавлены новые тактовые сигналы и удалены существующие тактовые сигналы.
Как описано в вышеупомянутой патентной заявке США № 10/693822, компонента временных соотношений высокого уровня может создать список интервалов для каждого тактового сигнала на основе запомненного списка событий (начало, пауза и т.д.) и соответствующих примитивов синхронизации. Интервалы активизации представляют собой прямые, неперекрывающиеся сегменты, которые описывают время, выраженное заданным тактовым сигналом в различных точках реального времени.
Как показано на фиг.4, по меньшей мере некоторые из свойств тактовых сигналов могут иметь иерархические связи в дереве 402 тактовых сигналов. На фиг.4 показаны три таких тактовых сигнала с их свойствами, а именно тактовые свойства 4041-4043, однако очевидно, что в данной ситуации может быть представлено гораздо больше тактовых сигналов и альтернативных деревьев временных соотношений. Для каждого тактового сигнала, который, например, может соответствовать анимированному объекту (или набору объектов, согласованных с раскадровкой), подлежащих отображению, компонента 206 высокого уровня включает в себя конечный автомат, называемый генератором 408 списка событий, который создает список событий (например, 4061) из тактовых свойств. В общем случае генератор 408 списка событий группирует в список событий события, которые первоначально были запланированы заданными тактовыми свойствами, вместе с любыми явно заданными интерактивными событиями, такими как запросы паузы и возобновления, которые принимаются в связи с данной анимацией, создавая список событий. Тактовый сигнал поддерживаются для каждой анимации (или группы анимаций через раскадровку, как описано ниже), и таким образом имеется список событий, соответствующий каждой независимой анимации/набору анимаций, а также список событий для каждого независимого линейного медиа.
Компонента высокого уровня включает в себя генератор 410 интервалов, который использует список событий (например, 4063) для каждой анимации или медиа для вычисления соответствующего списка интервалов (например, 4123 ), который подается в компоненту 210 низкого уровня. В свою очередь, компонента 210 низкого уровня включает в себя механизм 414 вычислений низкого уровня, который управляет выходными данными на основе текущего времени относительно интервальных данных, например, путем предоставления значения, характеризующего ход процесса, на основе интервальных данных для данного объекта и текущего времени в подсистему 520L функции анимации низкого уровня, которая определяет текущее значение для изменяющегося свойства анимированного объекта. Например, для любого заданного кадра механизм 414 вычислений низкого уровня интерполирует местоположение анимированного объекта на основе интервальных данных и текущего времени (которое может представлять собой системное время или относительное время). Заметим, что, как показано на фигурах 4 и 5, компонента временных соотношений высокого уровня включает в себя дерево 402 временных соотношений и списки 4061 -4063 событий, в то время как компонента 210 временных соотношений низкого уровня включает в себя списки 4121 -4123 интервалов, однако эти структуры данных могут поддерживаться в памяти фактически в любом месте, обычно в высокоскоростной памяти с произвольным доступом.
В итоге компонента 206 временных соотношений высокого уровня представляет себе дерево 402 тактовых сигналов, связанных между собой (например, иерархически) правилами и примитивами синхронизации. В вариантах изобретения тактовые сигналы в компоненте 206 временных соотношений высокого уровня используются для компиляции списков интервалов 412 активизации, которые используются механизмом временных соотношений низкого уровня. Механизм временных соотношений низкого уровня имеет списки 412 интервалов, которые представляют независимые (например, для каждого анимированного объекта или для каждого линейного медиа) тактовые сигналы. Как показано на фиг.5, имеется тактовый сигнал, который обеспечивает согласованное время для того и другого, например, системный тактовый сигнал 524, так что синхронизация множества уровней сохраняется.
В ответ на интерактивные изменения, полученные от приложения 202 (или некоторого другого источника) компоненте временных соотношений высокого уровня необходимо обновить состояние тактового сигнала, который непосредственно связан с этим изменением, а также всего, что косвенно связано с ним, как это определяется примитивами синхронизации. Заметим, что существует вероятность того, что изменение одного тактового сигнала может повлиять на другие тактовые сигналы в структуре временных соотношений. Например, воспроизведение слайд-шоу может приостановить полное отображение, в результате чего необходимо будет приостановить отображаемые в данный момент анимации и линейные медиа. Как описывается ниже, согласно одному варианту осуществления изобретения раскадровка позволяет сгруппировать вместе анимации и/или медиа и скоординировать их желаемым образом.
В общем случае всякий раз, когда появляется взаимодействие с некоторым объектом, повторно создается список событий, если это необходимо, и повторно вычисляется список интервалов, который посылается в компоненту временных соотношений низкого уровня. Компонента высокого уровня выполняет эти операции (например, с частотой порядка от шести до десяти раз в секунду), так что компоненте низкого уровня (например, работающей с частотой шестьдесят раз в секунду) понадобится только текущий список интервалов для каждого анимированного объекта.
Вдобавок к этой информации об интервалах и значениям начала и окончания для объекта в компоненту высокого уровня могут посылаться дополнительные параметры, изменяющие в результате список интервалов. Например, приложение может попытаться найти некоторый период времени, который соответствует событию. Приложение задает, когда и как долго должен осуществляться поиск. По аналогии с носителями, имеющими возможность перемотки назад или быстрой перемотки вперед, при использовании поиска анимации приложение может таким образом перескочить в конкретную временную точку вперед или назад. Обратное событие относится к другому типу запланированного или интерактивного события, которое может задавать приложение. Когда в списке есть обратное событие, ход процесса автоматически реверсируется, например, от ста процентов к нулю процентов. Также поддерживаются изменения скорости, например все, что ниже некоторого тактового сигнала, может быть настроено на более быстрое или медленное выполнение по сравнению с действительным временем. Могут быть заданы другие атрибуты с тем, чтобы указать, разрешен ли повторный запуск конкретного тактового сигнала, и/или, осуществлять ли запуск снова, если в данный момент выполнение отсутствует, например, запуск на первой секунде, повторный запуск через десять секунд, повторный запуск через сто секунд и так далее, но при этом необязательно осуществлять либо не осуществлять повторный запуск, если в данный момент идет выполнение.
Раскадровки для координации анимаций и медиа
Варианты изобретения, среди прочего, ориентированы на раскадровки, которые содержат объекты, позволяющие задавать дерево временных шкал для элемента (например, элемента FrameworkElement, такого как окно, панель, элемент управления, например, кнопка и т.д.). Временная шкала устанавливает значения свойства для элементов и управляет анимациями для этого элемента и его субдерева. Раскадровка в основном соответствует конкретному типу объекта временной шкалы, который может быть запущен, остановлен или приостановлен (пауза) или использован для поиска путем управления появлением анимированных элементов и/или режимом медиа, которые связны с этой раскадровкой. Раскадровки доступны как из разметки, так и из кода.
В некоторых вариантах для анимаций и раскадровок используется постоянно запускаемая модель. Вдобавок, эта модель устанавливает анимации и раскадровки в прямую связь с сигналами запуска (в отличие от свойства раскадровки в предыдущем варианте осуществления), чтобы дать возможность использовать режим передачи (описанный ниже в связи с фиг.6-9). Режим передачи основан на концепции сигналов запуска. Как описано ниже, незаданное, так называемое «отправное», значение определяется на основе текущего значения анимаций, которые существуют для некоторого свойства в момент запуска новой анимации в режим передачи для новой анимации. Это означает, что «отправное» значение анимации (если оно не задано) определяется только тогда, когда анимация запущена.
Поскольку это свойство определяется только тогда, когда анимация запущена, эта модель связывает анимации с сигналами запуска. В этой модели анимации либо расположены линейно в сигналах запуска, либо определены в ресурсах и не используются, пока не будут запущены.
В некоторых вариантах раскадровки включают в себя набор временных шкал верхнего уровня, которые могут быть связаны с некоторым элементом и запускаться независимо. Раскадровки также обеспечивают точки соединения между деревом временных соотношений и деревом элементов, что позволяет анимациям в раскадровке достигать своих целей, связанных с элементом, к которому приписана данная раскадровка. На основе разметки раскадровки также могут быть описаны в наборе сигналов запуска, который может активизироваться изменениями состояний, событиями или другими действиями и может содержать набор расширяемых действий, выполняемых при активизации сигнала запуска (например, начало или окончание временной шкалы). Раскадровки также могут быть описаны в свойстве ресурсов элемента, стиле или шаблоне.
В общем случае временные шкалы в раскадровке представляют анимационные шаблоны, которые могут быть применены к различным субдеревьям, элементам и другим объектам (например, буквы текста, слова, строки, параграфы и т.д.). Согласно одному варианту изобретения раскадровки (например, объекты, к которым обращаются через интерфейсы API) позволяют авторам программ планировать наборы скоординированных анимаций путем группирования анимаций (по свойствам элементов) на временных шкалах. Другими словами, раскадровка интегрирует дерево временных соотношений с деревом элементов, обеспечивая возможность манипуляции временными соотношениями для различных свойств различных анимаций согласованным образом посредством одной и той же временной шкалы. Таким образом, раскадровки обеспечивают способ комбинирования по иному независимых временных шкал, которые влияют на множество различных объектов и свойств в едином дереве временных шкал, что дает возможность автору программы организовать и управлять сложными наборами временных событий напрямую. Например, без необходимости нахождения и повторного запуска отдельных анимаций, группирование анимаций на временной шкале как части раскадровки позволяет повторно запускать все анимации сразу просто путем повторного запуска раскадровки.
Раскадровки могут быть использованы для конкретных экземпляров анимаций/видео/аудио или анимации в конкретном стиле. В некоторых сценариях единая раскадровка, описанная как ресурс, может быть применена к множеству элементов через отдельные сигналы запуска в этих элементах. Раскадровка BeginStoryboard запускает анимации (или другие медиа) для некоторых свойств либо из разметки, либо из кода. При использовании разметки BeginStoryboard использует элемент FrameworkElement.BeginStoryboard для обхода дерева временных шкал, присвоенных свойству раскадровки. Затем FrameworkElement.BeginStoryboard вызывает FrameworkElement.BeginAnimation для любых анимаций, существующих на «листьях» дерева временных шкал данной раскадровки. При разметке BeginStoryboard можно использовать как для сигналов запуска событий, так и для сигналов запуска свойств.
На основе разметки автор может использовать BeginStoryboard для запуска разметки. BeginStoryboard.Storyboard содержит разметку, чьи закрепленные свойства обеспечивают возможность обращения к множеству свойств на множестве элементов. Раскадровка может содержать все типы временных шкал, включая анимации и медийные временные шкалы (Media Timelines).
Следующий пример иллюстрирует линейную раскадровку. Анимируется объект типа контейнер (кнопка). В этом примере обеспечивается целевое имя (Storyboard.TargetName), но в некоторых вариантах изобретения этого не требуется, поскольку анимация запланирована в контейнере. Теги BeginStoryboard.Storyboard обеспечиваются автоматически, поскольку они не являются обязательными.
В этом варианте осуществления изобретения все анимации предназначены для объекта типа контейнер, когда Storyboard.TargetName не задано. Кроме того, они используют контейнер в качестве источника событий запуска, когда источник не задан. Эти два допущения позволяют упросить разметку (нет необходимости иметь имя TargetName или источник) в сценариях, предназначенных для контейнера и с запуском с помощью контейнера.
<Window> | |
<Button Width= 2 Name= myButton > | |
<Button.Triggers> | |
<EventTrigger Event= Loaded > | |
<EventTrigger.Actions> | |
<BeginStoryboard> | |
</Storyboard> | |
<DoubleAnimation To= 4 Duration= 0:0:1 | |
Storyboard.TargetProperty= Width | |
Storyboard.TargetName= myButton /> | |
//TargetName в этом случае не требуется, поскольку | |
по умолчанию целью является контейнер. | |
</Storyboard> | |
</BeginStoryboard> | |
</EventTrigger.Actions> | |
</EventTrigger> | |
</Button.Triggers> | |
</Button> | |
</Window> |
Следующий пример иллюстрирует разметку, определенную как источник. Поскольку анимация определена в разделе Источники, она может быть повторно использована при анимации других элементов Framework.
<Window> | |
<Button Width= 2 > | |
<Button.Resources | |
<DoubleAnimationTo= 4 Duration= 0:0:1 x:Key= myAnimation /> | |
</Button.Resources> | |
<Button.Triggers> | |
<EventTrigger Event= Loaded > | |
<EventTrigger.Actions> | |
<BeginStroyboardStoryboard= {StaticResource myAnimation} | |
TagetProperty=Width /> | |
</EventTrigger.Actions> | |
</EventTrigger> | |
<Button.Triggers> | |
</Button> | |
</Window> |
Как показано в вышеприведенных примерах, вдобавок к интеграции дерева временных соотношений с деревом элементов, раскадровки позволяют использовать сигналы запуска событий для управления своей работой (например, запуск, пауза, операции поиска и остановки). Вдобавок, раскадровки можно использовать с сигналами запуска свойств. В общем случае сигнал запуска свойства соответствует некоторому состоянию/значению, например, истинное или ложное, в то время как событие выполняет функцию запуска (и, следовательно, не имеет ложного значения). Например, сигнал запуска свойства может иметь истинное значение, когда мышь зависает над элементом, и ложное значение, когда этого нет. Каждое истинное или ложное состояние может быть использовано для избирательного запуска, остановки, паузы и/ или поиска в раскадровке (или раскадровках). Событие, например щелчок мышью по элементу, является запускающим и, следовательно, не имеет переменного состояния, но подобным образом может управлять процессом раскадровки. Таким образом, анимациями можно управлять посредством взаимодействия с пользователем с помощью отображенного представления дерева элементов.
Сигнал запуска события в качестве источника берет событие, вызывающее появление действий, когда это событие запускает ведущий элемент. Заметим, что в отличие от сигналов запуска свойств сигнал запуска события не ограничен сферой действия; он выполняет операцию, а затем эта операция определяет его собственный срок службы. Например, одно событие может запустить временную шкалу, и эта временная шкала может действовать, пока не истечет ее срок, или пока ее не остановит другой сигнал запуска события или т.п.
На фиг.6 показана система 600, которая может обеспечить плавные переходы между развитыми медиа согласно варианту изобретения. В этом варианте система 600 включает в себя анимационную систему 602, имеющею систему 604 передачи, вдобавок к ранее описанному приложению 202; систему 208 временных соотношений; графическую подсистему 212 и систему 314 свойств. Ниже описываются некоторые из функций указанных компонент, используемых в указанных переходах согласно различным вариантам изобретения.
Как было описано ранее, система 314 свойств может запоминать значения свойств различных визуальных объектов (не показаны), представляемых приложением 202. Например, система 314 свойств среди прочих свойств объекта может запоминать базовые значения для свойств длины и ширины объекта, представляющего кнопку, которая подлежит отображению в интерфейсе UI.
Система 208 временных соотношений, как было описано ранее, может координировать временные соотношения анимаций, созданных приложением 202. Например, система 208 временных соотношений может обеспечить информацию о временной шкале, используемую при вычислении текущих значений анимируемых свойств. В одном варианте система 208 временных соотношений может получать информацию о событиях и изменениях свойств от интерактивных элементов (не показаны) для создания сигналов запуска (например, сигналы запуска событий, сигналы запуска свойств), которые используют при создании анимаций. Например, интерактивные элементы могут осуществлять текущий контроль активности мыши и/или клавиатуры и предоставлять системе 208 временных соотношений информацию, заставляющую систему 208 временных соотношений запускать временные шкалы и обеспечивать сигналы запуска для анимационной системы 602.
Как было описано ранее, графическая подсистема 212 может создавать данные, необходимые для визуализации анимаций на устройстве отображения.
Анимационная система 602 в этом варианте выполняет операции, которые изменяют значения свойства, создающие визуальные анимированные эффекты. В одном варианте анимационная система включает в себя такие компоненты, как механизмы 206 и 208 компоновки и анимации высокого и низкого уровня, а также систему 604 передачи. Также анимационная система 602 может получать от приложения 202 заданные отправные и конечные значения для анимированных свойств, а также заданный период времени для выполнения анимаций. В некоторых анимациях для анимированных свойств могут быть использованы конечные и/или отправные значения по умолчанию, если они не заданы приложением.
Система 604 передачи в этом варианте изобретения может быть использована в том случае, когда анимация должна выполняться для одного свойства, в то время как для этого же свойства все еще продолжается выполнение другой анимации. В некоторых вариантах изобретения система 604 передачи может выполнять несколько различных передач, таких как перечисленные ниже в Таблице 1. Термин «старая» анимация относится к анимации, которая выполняется для конкретного свойства, когда приложение 202 запускает другую анимацию для этого же свойства. В некоторых сценариях старая анимация может представлять собой «компоновку» (то есть компоновку, определенную в Таблице 1) из двух или более других анимаций. В некоторых вариантах анимационная система 602 может быть реализована для обеспечения режима передачи по умолчанию для одного или нескольких заранее определенных сценариев. В этом варианте в Таблице 1 представлены различные значения свойства в режиме передачи, которые могут быть установлены в анимации. Свойство в режиме передачи по существу описывает, какое значение использовать в качестве отправного значения анимации и что делать со старой анимацией.
Таблица 1 | |
Передача | Режим |
Компоновка | Продолжается старая анимация, и в течение каждого цикла визуализации новая анимация использует в качестве отправного значения выходное значение старой анимации. Выходное значение новой анимации используется в качестве значения для визуализации данного свойства. |
Замещение | Старая анимация сбрасывается, а новая анимация использует базовые конечное и отправное значения, когда эти значения не заданы. |
Мгновенный снимок и замещение | Получают текущее значение старой анимации (то есть мгновенный снимок), и старая анимация сбрасывается. Затем новая анимация использует мгновенный снимок как отправное значение и базовое значение для конечного значения, если оно не задано. |
Мгновенный снимок и сохранение | Получают мгновенный снимок старой анимации, и разрешается поддержка выполнения старой анимации без изменения значения анимированного свойства. Новая анимация использует мгновенный снимок как отправное значение и базовое значение для конечного значения, если оно не задано. Когда новая анимация заканчивается, разрешается возобновление старой анимации данного свойства. |
Мгновенный снимок и сохранение/пауза | Получают мгновенный снимок старой анимации, и старая анимация приостанавливается. Новая анимация использует мгновенный снимок как отправное значение и базовое значение для конечного значения, если оно не задано. Когда новая анимация закончилась, разрешается старая анимация данного свойства, начиная с состояния анимации в момент паузы. |
Плавный переход | Использование взвешенного среднего анимаций. |
Очередь | Нахождение подвешенных анимаций в очереди, пока не закончатся существующие анимации. |
Еще раз используем пример с кнопкой, когда приложение может быть записано таким образом, чтобы оно инициировало увеличение кнопки до конкретного размера в течение определенного периода времени, когда курсор мыши передвигается к кнопке, а затем уменьшение размера кнопки до исходного в течение конкретного периода времени, когда курсор мыши покидает кнопку. В этом сценарии пользователь быстро перемещает курсор, включая и выключая кнопку, прежде чем полностью не истек конкретный период времени. Таким образом, анимация увеличения размера запускается после команды «MouseOver», а затем будет запущена анимация сокращения размера после команды «MouseExit», прежде чем завершится анимация увеличения размера.
Если режимом передачи для анимации увеличения размера является режим типа «мгновенный снимок и замещение» (может быть задан или выполняться по умолчанию), описанный выше в Таблице 1, то в тот момент, когда курсор покидает кнопку, будут сделаны мгновенные снимки текущих значений длины и ширины кнопки, получившихся в результате анимации с увеличением размера. В этом варианте изобретения мгновенно зафиксированные значения запоминаются в объекте 606 памяти анимации. В этом варианте осуществления изобретения анимационная система 602 создает объект 606 памяти анимации для каждого анимированного свойства. В некоторых вариантах осуществления изобретения объект 602 памяти анимации сконфигурирован для выполнения вычислений изменений свойств длины и ширины, которые вызывают увеличение и уменьшение размеров кнопки при ее визуализации графической подсистемой 212.
После выполнения мгновенных снимков значений для анимированных свойств анимация увеличения размеров прекращается (то есть анимация увеличения размера действительно завершается), и будет запущена анимация уменьшения размеров с отправными значениями для свойств длины и ширины, являющимися значениями мгновенного снимка. Если не запущены другие анимации, воздействующие на свойства ширины и длины кнопки, то анимация уменьшения размеров завершится, и в конце анимации свойства длины и ширины кнопки будут характеризоваться базовыми значениями.
Режим типа «мгновенный снимок и замещение» инициирует переход между анимациями увеличения и уменьшения размеров, который выглядит плавным для пользователя. То есть кнопка будет плавно увеличиваться до определенного размера, а затем плавно сжиматься до того же размера. В другой системе, которая не имеет вышеупомянутую возможность получения мгновенных снимков, приложение 202 или анимационная система 602 должны будут обеспечить отправное значение для анимации с уменьшением размеров (например, базовое отправное значение или запланированное значение для анимации с увеличением размеров), что может привести к неожиданному дерганию в изображении кнопки. То есть изображение кнопки будет увеличиваться до определенного размера, но затем вдруг появится внезапное изменение до другого размера, с которого начнется уменьшение размера кнопки. Вышеупомянутые преимущества осуществления мгновенных снимков можно также использовать для режимов типов «мгновенный снимок и сохранение» и «мгновенный снимок и сохранение/пауза», описанных выше в Таблице 1.
Ниже приведен пример кода, где использован режим плавной передачи типа «мгновенный снимок и замещение». Данная кнопка увеличивается в размерах по команде MouseEnter и уменьшается в размерах по команде MouseLeave, когда по умолчанию принят режим типа «мгновенный снимок и замещение».
<Grid xmlns="http://schemas.microsoft.com/winf!i/avalon/2005" | |
xmlns:x=''http://schemas.microsoft.com/winfx/xaml/2005" | |
<Grid.Resources> | |
<Style x:Key="GelButton TargetType=" {x:Type Button} "> | |
<Setter Property="Button.RenderTransform"> | |
<Setter. Value> | |
<ScaleTransform Center="0,0"ScaleX= l ScaleY= 1 /> | |
</Setter.Value> | |
</Setter> | |
<Style.Trigs> | |
<EventTrigger RoutedEvent="Mouse.MouseEnter"> | |
<EyentTriggerActions> | |
<BegmStoryboard> | |
<Storyboard> | |
<DoubleAnimation Duration="0:0:0.2" | |
Storyboard.TargetProperty="RenderTransfbrm.ScaleY"To="1.5" | |
AccelerationRatio= .9 /> | |
<DoubleAnimation Duration="0:0:0.2" | |
Storyboard.TargetProperty="RenderTransform.ScaleY"To="1.5" | |
AccelerationRatio= .9 /> | |
</Storyboard> | |
</BeginStoryboard> | |
</EventTrigger.Actions> | |
</EventTrigger> | |
<EventTriggerRoutedEvent= Mouse,MouseLeave"> | |
<EventTrigger.Actions> | |
</BeginStoryboard> | |
<Storyboard> | |
<DoubleAnimationDuration= 0:0:0.2 | |
Storyboard.TargetProperty="RenderTransform.ScaleX AccelerationRatio= .9 /> | |
<DoubleAnimationDuration= 0:0:0.2 | |
Storyboard.TargetProperty= RenderTransform.ScaleY''AccelerationRatio= .9 /> | |
</Storyboard> | |
</BeginStoryboard> | |
</EventTrigger.Actions> | |
</EventTngger> | |
</Style.Triggers> | |
</Style> | |
</Grid.Resources> | |
<Button Style="{StatipResource GelButton}" Width="100" Height=" 100"/> | |
</Grid> |
Примерный операционный поток в режиме типа «мгновенный снимок и замещение»
На фиг.7 показан операционный поток 700 для выполнения режима типа «мгновенный снимок и замещение» согласно одному варианту осуществления изобретения. Операционный поток 700 может выполняться в любой подходящей вычислительной среде. Например, операционный поток 700 может выполняться системой, такой как система 600 (фиг.6). Таким образом, описание операционного потока 700 может относиться по меньшей мере к одной из компонент на фиг.6. Однако любая ссылка на компоненты по фиг.6 имеет лишь описательные цели, и следует понимать, что варианты осуществления фиг.6 не являются ограничением для операционного потока 700.
В блоке 702 определяется сигнал запуска для анимации. В одном варианте анимационная система, такая как анимационная система 602 (фиг.6), определяет сигнал запуска (например, сигнал запуска события или сигнал запуска свойства). В некоторых вариантах анимационная система может получить уведомление о сигнале запуска от интерактивных элементов (описанных выше в связи с фиг.6). В этом примерном операционном потоке в данный момент времени не выполняются другие анимации для свойства, связанного с данной анимацией (то есть свойство, которое изменяется при анимации визуального объекта).
В блоке 704 распределяется объект памяти анимации. В одном варианте анимационная система создает объект анимации, такой как объект 606 памяти анимации (фиг.6), для обработки анимаций применительно к свойству, связанному с данной анимацией. В некоторых вариантах осуществления объект памяти анимации может быть создан для каждого анимируемого свойства. Когда все анимации для свойства завершены, объект памяти анимации может быть в некоторых вариантах изобретения удален. В некоторых вариантах осуществления, когда анимация (анимации) достигла полного значения (значений), полное значение (значения) может быть сохранено в объекте памяти анимации, но остальная информация из запомненной информации может быть удалена.
В блоке 706 выполняется сохранение в объекте памяти анимации базового значения свойства, связанного с запущенной анимацией. В одном варианте анимационная система запоминает базовое значение в объекте памяти анимации. Базовое значение получают из системы свойств, например, системы 314 свойств (фиг.6).
В блоке 708 выполняется запуск анимации, и анимация сохраняется объектом памяти анимации. В одном варианте осуществления объект памяти анимации в действительности будет выполнять повторные вычисления значений для данного свойства с частотой обновления экрана, пока анимация не завершится (или будет выполнена замещение или пауза), так что визуальный объект появится с анимацией. Объект памяти анимации также сохраняет анимацию (то есть поддерживает информацию, определяющую текущее состояние анимации, так что анимация может быть локализована и продолжена, если она сохранена или сохранена/приостановлена) в то время как анимация выполняется.
В блоке 710, перед тем как завершена первая анимация, определяется сигнал запуска для второй анимации, включающей то же самое свойство. Как и в блоке 702, анимационная система в одном варианте осуществления изобретения обнаруживает этот другой сигнал запуска. В данном примерном операционном потоке вторая анимация сконфигурирована таким образом, чтобы работать в режиме передачи, например, режиме типа «мгновенный снимок и замещение», определенном в Таблице 1.
В блоке 712 текущее значение свойства, получившееся в результате первой анимации, сохраняется (то есть выполняется мгновенный снимок). В одном варианте мгновенный снимок запоминается в объекте памяти анимации. Например, анимационная система может вычислить значение для данного свойства во время следующего обновления экрана в соответствии с первой анимацией и сохранить это вычисленное значение (то есть мгновенный снимок) в объекте памяти анимации.
В блоке 714 первая анимация сбрасывается. В одном варианте осуществления анимационная система удаляет информацию о состоянии первой анимации, которая была запомнена в объекте памяти анимации.
В блоке 716 запускается вторая анимация, которая сохраняется объектом памяти анимации. Согласно данному варианту осуществления изобретения мгновенный снимок используют в качестве отправного значения свойства при выполнении второй анимации. По аналогии с операцией, выполняемой в блоке 708, анимационная система в действительности будет повторно вычислять значения для данного свойства с частотой обновления экрана, пока не завершится анимация (или будет выполнено замещение или пауза), так что визуальный объект появится с анимацией. Объект памяти анимации также сохраняет вторую анимацию (то есть поддерживает информацию, определяющую текущее состояние второй анимации, так что вторая анимация может быть локализована и продолжена, если она сохранена или сохранена/приостановлена), в то время как выполняется вторая анимация.
Хотя операционный поток 700 показан и описан последовательно в определенном порядке, в других вариантах осуществления изобретения операции, описанные в упомянутых блоках, могут выполняться в другом порядке, множество раз и/или параллельно. Кроме того, в некоторых вариантах одна или несколько операций, описанных в вышеуказанных блоках, могут быть выделены в другой блок, опущены или объединены.
На фиг.8 показано, каким образом получают значения для свойства, связанного с анимацией, в соответствии с режимом передачи типа «мгновенный снимок и замещение» согласно одному варианту осуществления изобретения. В этом варианте осуществления неанимированное свойство 802 имеет базовое значение 804. В одном варианте осуществления базовые значения запоминаются в системе свойств, такой как система 314 свойств, описанная ранее (фиг.3, 6).
Когда запускается анимация 808 (указанная на фиг.8 как анимация А), которая воздействует на свойство 802, в качестве отправного значения 810 для анимации 808 обычно используют базовое значение 804. Конечное значение 812 анимации 808 может быть задано приложением (например, таким как приложение 202 на фиг.6), которое создало анимацию 808. В некоторых сценариях конечное и отправное значения могут оставаться незаданными приложением, что приводит к использованию базовых значений по умолчанию. В одном варианте осуществления отправное и конечное значения запоминаются в объекте памяти анимации, таком как объект 606 памяти анимации (фиг.6), который может быть распределен анимационной системой, такой как анимационная система 602 (фиг.6), когда запущена анимация 1108. При выполнении анимации 808 значение свойства (изменяемого в соответствии с анимацией 808) вычисляют для каждого момента обновления экрана и выводят в виде значения 814 визуализации.
В этом примере анимация 816 (указанная на фиг.8 как анимация В) запускается до завершения анимации 808. В этом примере анимация 816 была сконфигурирована с возможностью работы в режиме типа «мгновенный снимок и замещение». Будучи запущенной, анимация 816 выполняет «мгновенный снимок» упомянутого свойства и использует этот мгновенный снимок в качестве отправного значения 818 анимации 816. Конечное значение 820 анимации 816 может быть задано приложением, которое создало анимацию 816. В других сценариях конечное значение может быть не задано, что заставляет использовать базовое конечное значение. В некоторых вариантах осуществления изобретения эти конечное и отправное значения могут запоминаться в вышеупомянутом объекте памяти анимации. Далее анимация 808 сбрасывается, так что на значения упомянутого свойства оказывает влияние только анимация 816. В ходе выполнения анимации 816 значение упомянутого свойства (изменяемого в соответствии с анимацией 816) вычисляют для каждого обновления экрана и выводят значение 822 визуализации.
Если бы в качестве режима передачи использовался режим «мгновенный снимок и сохранение», то анимация 808 не была бы сброшена. Наоборот, было бы разрешено продолжать выполнение анимации 808, но значения соответствующего свойства вычислялись бы с использованием только анимации 816 (то есть анимация 808 была бы проигнорирована). Затем, когда анимация 816 завершена, возобновится анимация 808 с использованием последнего значения свойства, созданного анимацией 816. Аналогичным образом, если в качестве режима плавной передачи был бы использован режим «мгновенный снимок и сохранение/пауза», то анимация 808 не была бы сброшена. Наоборот, будет разрешена приостановка анимации 808 в состоянии, которое было при запуске анимации 816, а значения соответствующего свойства будут вычисляться с использованием только анимации 816. Затем, когда анимация 816 завершилась, будет возобновлена анимация 808 с использованием значения свойства, которое было при приостановке анимации 808.
На фиг.9 представлены взаимосвязи между анимациями разных уровней согласно одному варианту осуществления изобретения. В этом варианте осуществления визуальный объект 900 задается приложением (таким как приложение 202 по фиг.6), которое может иметь несколько анимаций, логически распределенных на разных уровнях. В этом примере визуальный объект включает в себя уровни с 902-1 по 902-N. Уровень 902-1 включает в себя анимацию 904-1А и анимацию 904-1В; уровень 902-2 включает в себя анимацию 904-2А и анимацию 904-2В и так далее до уровня 902-N, который включает в себя анимацию 904-NА и анимацию 904-N. Хотя в этом примере имеется N уровней, и каждый уровень включает в себя две анимации, количество уровней и количество анимаций на один уровень может изменяться в зависимости от проектных вариантов, выбранных разработчиком приложения.
В одном варианте осуществления первый уровень 902-1 определен как содержащий все анимации, которые запускаются сигналами запуска событий (в отличие от сигналов запуска свойств). Таким образом, анимации уровней с 2 по N запускаются сигналами запуска свойств. В некоторых вариантах каждый уровень связан с одним сигналом запуска свойства и включает в себя анимацию (анимации), которые запускаются этим сигналом запуска свойства. Кроме того, в этом варианте изобретения выполняющиеся анимации осуществляются в порядке от первого уровня 902-1 до N-го уровня 902-N. Кроме того, в этом варианте изобретения анимации на одном уровне могут быть заданы вместе с режимом передачи, который включает в себя выполнение мгновенных снимков (например, режимы типа «мгновенный снимок и замещение», «мгновенный снимок и сохранение», «мгновенный снимок и сохранение/пауза», как описано в Таблице 1.) и/или компоновки, в то время как переходы между уровнями происходят в режиме передачи с компоновкой. Ниже вместе с фиг.10 описан пример режима передачи с компоновкой.
В некоторых вариантах осуществления приоритет компоновки на уровне может быть определен заранее. Значение, выданное анимацией с более высоким приоритетом, будет использовано в качестве отправного значения для следующей анимации с более низким приоритетом.
В одном варианте осуществления приоритет определяется следующим образом: (1) анимации запускаются из стилей, причем порядок их появления в разметке или коде определяет приоритет для множества запущенных на основе стилей анимаций на этом уровне; (2) анимации запускаются от локальных сигналов запуска элементов, причем порядок их появления в разметке или коде определяет приоритет для множества анимаций, запущенных на основе «локальных элементов», на данном уровне; и (3) анимации получают из вызова раскадровки или способа, причем приоритет для анимаций задается порядком использования анимаций, полученных по варианту (3).
В некоторых вариантах осуществления, когда существуют все анимации одного уровня, этот уровень может быть удален. Уровень может быть удален из любого места в «стеке» уровней.
На фиг.10 показана компоновка из двух анимаций согласно одному варианту осуществления изобретения. В этом варианте неанимируемое свойство 1002 имеет базовое значение 1004. В одном варианте изобретения базовые значения запоминаются в системе свойств, например, в системе 314 свойств, описанной ранее (фиг.3, 6).
Когда запускается анимация 1008 (указанная на фиг.10 как анимация А), которая воздействует на данное свойство, в качестве отправного значения 1010 для анимации 1008, как правило, используют базовое значение 1004. Конечное значение 1012 анимации 1008 может быть задано приложением (таким как например, приложение 202 на фиг.6), которое создало анимацию 1008. В одном варианте конечное и отправное значения запоминаются в объекте памяти анимации, таком как объект 606 памяти анимации (фиг.6). Хотя на фиг.10 это не показано, когда анимация 1008 выполняется сама по себе, значение свойства (изменяемого в соответствии с анимацией 1008), вычисляют для каждого момента обновления экрана и подают в виде значения визуализации в графическую подсистему, такую как графическая подсистема 212 (фиг.3, 6).
В этом примере анимация 1016 (указанная на фиг.10 как анимация В) запускается до завершения анимации 1008. В этом примере анимация 1016 была сконфигурирована с возможностью осуществления режима «компоновки». В отличие от режима типа «мгновенный снимок и замещение», анимация 1008 продолжает выполняться, так что мгновенное значение соответствующего свойства непрерывно обновляется. Однако мгновенное значение свойства, полученное из анимации 1008, не используется как значение «для визуализации». В отличие от этого мгновенное значение, вычисленное в результате анимации 1008, используют как отправное значение 1018 анимации 1016 в виде промежуточного значения. Конечное значение 1020 анимации 1016 может быть задано приложением, которое создало анимацию 1016. В некоторых вариантах конечное и отправное значения могут запоминаться в вышеупомянутом объекте памяти анимации. Значение свойства, полученное в результате анимации 1016, используют затем в качестве значения 1022 для визуализации. В ходе выполнения анимаций 1008 и 1016 значение свойства (изменяемое в соответствии с компоновкой из анимаций 1008 и 1016) вычисляют для каждого обновления экрана и выводят в качестве значения 1022 для визуализации.
Использованные по всему описанию изобретения ссылки на «один вариант», «вариант» или «примерный вариант» означают, что конкретный описанный признак, структура или характеристика включены по меньшей мере в один вариант. Таким образом, использование указанных фраз может относиться к более чем одному варианту изобретения. Кроме того, описанные здесь признаки, структуры или характеристики могут быть скомбинированы любым подходящим образом в одном или нескольких вариантах изобретения.
Специалистам в данной области техники должно быть очевидно, что данное изобретение можно реализовать без одной или нескольких конкретных деталей или с помощью других способов, ресурсов, материалов и т.д. В других случаях хорошо известные структуры, ресурсы или операции не были показаны или описаны подробно просто для того, чтобы избежать затемнения аспектов изобретения.
Хотя здесь были продемонстрированы и описаны примерные варианты и приложения, должно быть понятно, что изобретение не ограничивается вышеописанной точной конфигурацией и ресурсами. Специалистам в данной области техники должны быть очевидны различные модификации, изменения и варианты, которые могут быть внесены в компоновку, функционирование и детали раскрытых здесь способов и систем, не выходя за рамки объема заявленного изобретения.
Класс G06T13/00 Анимационные эффекты в двухмерных изображениях, например с использованием спрайтов, (элементов динамического графического отображения )