Главная » Silverlight » Производительность анимации

0

Чаще всего для анимации пользовательского интерфейса достаточно создать и сконфи­гурировать объекты раскадровки и анимации. Однако иногда, особенно если одновремен­но выполняется много анимаций, необходимо уделить внимание их производительности. Некоторые эффекты могут существенно замедлить выполнение приложения. Эффекты, в которых используются видеофайлы, большие растровые изображения, многоуровневая полупрозрачность, вовлекают в работу не только центральный процессор, но и графиче­скую карту. При неправильной реализации они могут выполняться, дергаясь. Кроме того, ресурсоемкие эффекты могут перегрузить процессор, и приложение замедлит выполнение.

В Silverlight встроено несколько способов управления производительностью. В сле­дующих разделах вы научитесь правильно устанавливать частоту кадров и кешировать большие растровые изображения в видеокарте. Эти две технологии уменьшают нагруз­ку на процессор. Кроме того, вы узнаете о нескольких способах выяснения, оптимально ли выполняется анимация или необходимо ваше вмешательство.

Частота кадров

Как упомянуто выше, в реальных анимациях чаще всего используется метод линей­ной интерполяции, т.е. свойство монотонно изменяется от начальной точки до конеч­ной. Например, если начальное значение равно 1, а конечное — 10, свойство получает значения 1, 1.1, 1.2 и так далее, пока не достигнет значения 10.

Как в Silverlight определяется шаг приращения? К счастью, разработчик освобож­ден от решения этой задачи, потому что шаг вычисляется автоматически. Надстройка Silverlight самостоятельно вычисляет приращение, необходимое для плавного измене­ния рисунка. Шаг вычисляется на основе частоты кадров. Стандартная частота рав­на 60 кадрам в секунду. Иными словами, каждую 1/60 секунды Silverlight вычисля­ет новые анимированные значения и обновляет изменяемые свойства. При частоте 60 кадров в секунду обеспечивается плавное изменение рисунка от начала до конца анимации. В зависимости от клиентского оборудования и производительности анима­ции, Silverlight может уменьшить частоту кадров.

Уменьшить частоту кадров можно также, изменив код страницы. Обычно это де­лают, если считают, что при меньшей частоте анимация выглядит достаточно хорошо и незачем зря загружать процессор. В некоторых случаях анимация выполняется лучше при меньшей частоте кадров на устаревшем оборудовании. В Интернете для большин­ства объектов анимации установлены скромные 15 кадров в секунду.-

Чтобы изменить частоту кадров, добавьте параметр maxFramerate на входную стра­ницу приложения.

<div id="silverlightControlHost"> cobject data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%"

height="100%"> <param name="maxFramerate" value="15" />

</object>

<iframe style=’visibility:hidden;height: 0;^ width:0;border:Opx’></і frame>

</div>

Совет. Для повышения производительности анимации не злоупотребляйте управлением прозрачностью, постарайтесь отказаться от изменения размеров текста (шрифты прорисовываются долго) и не используйте безоконный режим (см. главу 9), позволяющий видеть элементы HTML сквозь содержимое Silverlight.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии