Активация анимации в другом элементе управления (C#)

Кристиан Венц

Скачать в формате PDF

Элемент управления "Анимация" в наборе средств управления AJAX ASP.NET — это не только элемент управления, но и вся платформа для добавления анимаций в элемент управления. Как правило, запуск анимации активируется взаимодействием пользователя с тем же элементом управления. Однако также можно взаимодействовать с одним элементом управления, а затем анимировать другой элемент управления.

Обзор

Элемент управления "Анимация" в наборе средств управления AJAX ASP.NET — это не только элемент управления, но и вся платформа для добавления анимаций в элемент управления. Как правило, запуск анимации активируется взаимодействием пользователя с тем же элементом управления. Однако также можно взаимодействовать с одним элементом управления, а затем анимировать другой элемент управления.

Шаги

Во-первых, включите ScriptManager на страницу, а затем загружается библиотека AJAX ASP.NET, что позволяет использовать набор элементов управления.

<asp:ScriptManager ID="asm" runat="server" />

Анимация будет применена к панели текста, которая выглядит следующим образом:

<asp:Panel ID="panelShadow" runat="server" CssClass="panelClass">
 ASP.NET AJAX is a free framework for quickly creating a new generation of more 
 efficient, more interactive and highly-personalized Web experiences that work 
 across all the most popular browsers.<br />
 ASP.NET AJAX is a free framework for quickly creating a new generation of more 
 efficient, more interactive and highly-personalized Web experiences that work 
 across all the most popular browsers.<br />
 ASP.NET AJAX is a free framework for quickly creating a new generation of more 
 efficient, more interactive and highly-personalized Web experiences that work 
 across all the most popular browsers.<br />
</asp:Panel>

В связанном классе CSS для панели определите хороший цвет фона, а также задайте фиксированную ширину для панели:

<style type="text/css">
 .panelClass {background-color: lime; width: 300px;}
</style>

Чтобы начать анимацию панели, используется кнопка HTML. Обратите внимание, что предпочтительнее использовать <input type="button" /> вместо <asp:Button />, так как мы не хотим, чтобы происходил postback, когда пользователь нажимает на эту кнопку.

<input type="button" id="Button1" runat="server" Value="Launch Animation" />

Затем добавьте AnimationExtender на страницу, указав ID, атрибут TargetControlID и обязательный runat="server". Важно задать TargetControlID идентификатор кнопки (элемент, запускающий анимацию), а не идентификатор панели (анимированный элемент)

<ajaxToolkit:AnimationExtender ID="ae" runat="server" TargetControlID="Button1">

В узле <Animations> разместите анимации как обычно. Чтобы заставить их изменить панель, а не кнопку, задайте AnimationTarget атрибут для каждого элемента анимации внутри AnimationExtender. Значение для AnimationTarget — это, конечно, идентификатор панели. Таким образом анимация выполняется с панелью, а не с кнопкой триггера. Ниже приведена разметка AnimationExtender для этого сценария:

<ajaxToolkit:AnimationExtender ID="ae" runat="server" TargetControlID="Panel1">
 <Animations>
 <OnClick>
 <Sequence>
 <EnableAction Enabled="false" />
 <Parallel>
 <FadeOut Duration="1.5" Fps="24" AnimationTarget="Panel1" />
 <Resize Width="1000" Height="150" Unit="px" 
 AnimationTarget="Panel1" />
 </Parallel>
 </Sequence>
 </OnClick>
 </Animations>
</ajaxToolkit:AnimationExtender>

Обратите внимание на особый порядок отображения отдельных анимаций. Во-первых, кнопка будет деактивирована после запуска анимации. Так как атрибут AnimationTarget отсутствует в элементе <EnableAction>, эта анимация применяется к исходному элементу управления: кнопке. Следующие два шага анимации должны выполняться параллельно (<Parallel> элемент). У обоих атрибутов задано AnimationTarget"Panel1"значение , что позволяет анимировать панель, а не кнопку.

Нажатие мыши на кнопку запускает анимацию панели

Нажатие мыши на кнопку запускает анимацию панели (щелкните, чтобы просмотреть изображение полного размера)