| Индия, bandra |
Элементы управления Silverlight в ASP.NET
Software Development Kit (SDK) для Silverlight 2 включает два элемента управления ASP.NET, которые могут использоваться для поставки Silverlight-приложений в ASP.NET. Обратите внимание, что Silver-light можно использовать в ASP.NET и без этих элементов управления, но, несомненно, они намного упрощают задачу по управлению и доставке Silverlight-содержимого.
Начнем с элемента управления Silverlight. Он обеспечивает возможность использовать объявление ASP.NET на сервере, что создаст необходимые теги <OBJECT> и <PARAM> в браузере, позволяя использовать парадигму обработки на стороне сервера, хорошо знакомую разработчикам ASP.NET.
Второй элемент управления - MediaPlayer, который тоже обеспечивает модель объявления ASP.NET, но поставляет не универсальный элемент управления Silverlight, а приложение Silverlight-медиаплеера, со всеми его элементами управления и функциональностью.
В данной лекции мы рассмотрим оба этих элемента управления и свойства, методы и события, которые они предлагают разработчикам.
Подсказка Прежде чем использовать элементы управления ASP.NET Silverlight в своей Веб-форме, необходимо зарегистрировать сборку, в которую они входят. Обычно для этого используется следующий код в начале разметки страницы:
<%@ Register Assembly="System.Web.Silverlight"
Namespace="System.Web.UI.SilverlightControls"
TagPrefix="asp" %>Серверный элемент управления Silverlight
Элемент управления Silverlight находится в пространстве имен System.Web.UI.SilverlightControls.Silverlight. Заметьте, чтобы использовать его на странице, на ней должен присутствовать ScriptManager.
При создании Silverlight-приложения с использованием шаблона Microsoft Visual Studio также создается страница ASPX для размещения элемента управления ASP.NET Silverlight. Тег должен выглядеть примерно так:
<asp:Silverlight ID="Xaml1" runat="server"
Source="~/ClientBin/ASP1.xap" Version = "2.0"
Width="100%" Height="100%" />Как видите, используется обычный синтаксис ASP.NET, т.е. свойства элемента управления задаются посредством атрибутов XML
Использование счетчика частоты кадров
Атрибут EnableFrameRateCounter позволяет видеть частоту кадров, обеспечиваемую в настоящий момент Silverlight. Так очень удобно контролировать производительность приложения, особенно при выполнении большого количества анимаций.
Например, рассмотрим следующее приложение XAML В нем выполняется анимация линии: ее разворот на 360 градусов:
<UserControl x:Class="ASP1.Page" xmlns=" http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xa ml" Width="400" Height="300"
xmlns:d = "http://schemas. microsoft. com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<UserControl.Resources>
<Storyboard x:Name="Storyboard1" RepeatBehavior="Forever">
<DoubleAnimationUsingKey Frames="" Storyboard.TargetName="path"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
BeginTime="00:00:00">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:04" Value="359"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<Ellipse HorizontalAlignment="Stretch" Margin="147,79,151,96" VerticalAlignment="Stretch"
RenderTransformOrigin="0.5,0.48" Fill= "#FF6A2020" Stroke="#FF000000"/>
<Path Height="115" HorizontalAlignment="Stretch" Margin="199.564,30.436,194.436,0"
x:Name="path" VerticalAlignment="Top"
RenderTransformOrigin="0.891,0.983" Fill = "#FFFFFFFF"
Stretch="Fill" Stroke="#FF000000"
StrokeThickness="6" Data = "M196,137.15463 L196,35.15464">
<Path.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="0"/>
<TranslateTransform/>
</TransformGroup>
</Path.RenderTransform>
</Path>
<Button Height="30" HorizontalAlignment="Left" Margin="30,19,0,0" VerticalAlignment="Top"
Width="59" Content="Start" x:Name="btnStart" Click="btnStart Click"/>
</Grid>
</UserControl>Для Button описано событие Click. Код обработки события Click просто запускает анимацию Storyboard:
private void btnStart Click(object sender, RoutedEventArgs e)
{
Story boa rd1.Begin();
}Чтобы увидеть частоту кадров, активируйте счетчик частоты кадров в элементе управления ASP.NET Silverlight:
<asp:Silverlight ID="Xaml1" runat="server"
Source="~/ClientBin/ASP1.xap" Version = "2.0"
Width=" 100%" Height="100%" EnableFrameRateCounter="true" />При выполнении приложения по нажатию кнопки запускается анимация. При этом в строке состояния браузера будет отображаться частота кадров. Это можно увидеть на рис. 13.1.
Рекомендуется использовать эту возможность только во время отладки; отключите ее для рабочих приложений.
Задание максимальной частоты кадров
По умолчанию частота смены кадров в Silverlight составляет 60 кадров в секунду. Это означает, что все анимации с использованием временной шкалы разделяются на приращения свойств так, что свойство меняется 60 раз в секунду. Например, чтобы развернуть линию на 360 градусов за 1 секунду, анимация была бы разделена на 60 равных операций, каждая из которых осуществляла бы разворот на 6 градусов. Это может создавать большую вычислительную нагрузку, поэтому общую производительность можно повысить, снизив частоту кадров, или наоборот, если производительность не проблема и необходимо повысить плавность анимации приложения, можно увеличить частоту кадров.
Рассмотрим пример, в котором показано, как изменить частоту кадров до 10 кадров в секунду:
<asp:Silverlight ID="Xaml1" runat="server"
Source="~/ClientBin/ASP1.xap" Version="2.0"
Width = "100%" Height="100%" EnableFrameRateCounter="true"
MaxFrameRate="10" />Если выполнить обсуждаемую ранее анимацию с вращением, вы заметите, что движение линии стало не таким плавным, как ранее. Также показания частоты, количество кадров в секунду (frames per second, fps), опустились до отметки 10 кадров в секунду (рис. 13.2).

