Главная » Разработка для Windows Phone 7 » Цели анимации Windows Phone 7

0

Анимации в Silverlight реализовываются путем изменения определенного свойства определенного объекта, например, свойства Opacity объекта Image. Изменение значения свойства Opacity во времени приводит к созданию эффекта постепенного проявления элемента Image, или постепенного его исчезновения, или проявления и исчезновения, в зависимости от предъявляемых требований.

Цель анимации должна быть свойством-зависимостью! Очевидно что свойство-зависимость должно быть описано классом, наследуемым от DependencyObject.

Классы анимаций различают по типу анимируемого свойства. Целями анимаций Silverlight могут быть свойства типа double, Color, Point и Object. (Можно подумать, что вошедший в этот список Object объединяет в себе все остальные типы, но вскоре мы увидим, что анимации Object крайне ограничены в своей функциональности.)

Свойства типа double очень широко используются в Silverlight. К ним относятся свойства Opacity, Canvas.Left и Canvas.Top, Height и Width, а также все свойства классов трансформаций: свойства X и Y класса TranslateTransform, свойства ScaleX и ScaleY класса ScaleTransform и свойство Angle класса RotateTransform. Анимация трансформаций – самый распространенный и наиболее эффективный способ применения анимаций.

Также в данной главе я покажу, как использовать свойство Projection (Проекция), описанное элементом UIElement, для создания подобных трехмерной графике эффектов перспективы.

Включите фантазию и, встречая свойство-зависимость типа double, Color или Point, подумайте, как можно было бы анимировать его и создать интересный визуальный эффект. Например, анимацией свойства Offset объектов GradientStop можно обеспечить изменение градиентных кистей во времени, или анимация свойства StrokeDashOffset объекта Shape обеспечит перемещение точек и штрихов вдоль линий. (Напомните мне продемонстрировать пример этого!)

Анимировать свойство типа Color можно только для кистей SolidColorBrush, LinearGradientBrush и RadialGradientBrush.

Свойства типа Point довольно редко используются в Silverlight, только для объектов Geometry. Далее в данной главе будет приведена пара примеров анимации этих свойств.

Классы DoubleAnimation (Анимация свойств типа Double), ColorAnimation (Анимация свойств типа Color) и PointAnimation (Анимация свойств типа Point) позволяют анимировать свойства типа double, Color или Point непрерывно из одного значения в другое и, возможно, в обратном направлении один или много раз. (Даже после многих лет разработки приложений

на WPF и Silverlight мне по-прежнему хочется перевести DoubleAnimation как «двойная анимация». Но нет! Это анимация, целью которой являются свойства типа double, т.е. с плавающей точкой двойной точности.)

У классов DoubleAnimation, ColorAnimation и PointAnimation есть свойство Easing (Сглаживание). В качестве его значения может быть задан экземпляр одного из множества классов, которые позволяют менять скорость анимации в начале или в конце (или и там, и там) или даже кратковременно отклоняться от целевого значения анимации, делая движение более естественным.

Классы DoubleAnimationUsingKeyFrames (Анимация свойств типа Double с использованием ключевых кадров),ColorAnimationUsingKeyFrames (Анимация свойств типа Color с использованием ключевых кадров) и PointAnimationUsingKeyFrames (Анимация свойств типа Point с использованием ключевых кадров) позволяют объединять и создавать более сложные анимации. У этих классов есть свойство KeyFrames (Ключевые кадры), которое является коллекцией объектов ключевых кадров, указывающих на то, каким должно быть значение целевого свойства по истечении определенного времени.

Например, объект DoubleAnimationUsingKeyFrames может включать отдельные ключевые кадры типа DiscreteDoubleKeyFrame (Дискретный ключевой кадр типа Double) (для скачкообразного перехода к определенному значению в определенное время), LinearDoubleKeyFrame (Линейный ключевой кадр типа Double) (для перехода с постоянной скоростью, обеспечивающей достижение свойством определенного значения в определенное время), SplineDoubleKeyFrame (Сплайновый ключевой кадр типа Double) (позволяющий задавать анимацию, которая ускоряется или замедляется по сплайну Безье) и EasingDoubleKeyFrame (Сглаживающий ключевой кадр типа Double) (позволяющий применять одну из функций сглаживания). Аналогичные классы существуют для ColorAnimationUsingKeyFrames и PointAnimationUsingKeyFrames.

Теоретически мы можем анимировать свойства типа Object, но для этого в нашем распоряжении есть только классы ObjectAnimationUsingKeyFrames и DiscreteObjectKeyFrame. Это означает, что мы ограничены только анимациями по дискретным значениям. Практически всегда эта возможность используется для анимации свойств, являющихся перечислениями, таких как Visibility.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

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