Traduction

Cet article est la traduction la plus fidèle possible de l'article original : Disabling Actions during Animation

Introduction

Le contrôle Animation de l'ASP.NET AJAX Control toolkit n'est pas seulement un contrôle mais un framework pour ajouter des animations à un contrôle. Il y a aussi le support d'actions, comme les clics de la souris. Pourtant, lorsqu'un clic de souris démarre une animation, il est souhaitable de désactiver les clics de souris durant l'animation.

Etapes

Pour commencer, il faut inclure le ScriptManager dans la page ; l'ASP.NET AJAX library est ensuite chargé, rendant possible l'utilisation du Control Toolkit :

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

L'animation s'appliquera à un bouton HTML comme ceci :

 
Sélectionnez
<input type="button" ID="Button1" runat="server" Value="Lancer Animation" /> 

Notez qu'un contrôle HTML est utilisé à la place d'un contrôle web puisque nous ne voulons pas qu'un postback soit créé par le bouton ; une animation côté client pourra être ainsi lancée pour nous.

Ensuite, ajoutez l'AnimationExtender à la page, renseignez les attributs ID et TargetControlID et insérez runat="server" qui est obligatoire :

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

A l'intérieur de la balise <Animations>, <OnClick> est l'élément approprié pour intercepter le clic de souris. Cependant, le bouton pourrait être cliqué durant l'animation. L'élément <EnableAction> peut s'occuper de ça. L'attribut Enabled="false" désactive le bouton dans le cadre de l'animation. Puisque nous utilisons plusieurs animations individuelles (en désactivant le bouton et les animations actuelles), l'élément <Parallel> est obligatoire pour attacher l'ensemble des animations en une. Ci-dessous le balisage complet pour AnimationExtender :

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

Il serait aussi possible de réactiver le bouton après l'animation, en utilisant l'élément XML suivant à la fin de la liste :

 
Sélectionnez
<EnableAction Enabled="true" />

Cependant, dans le scénario donné, ceci serait inutile puisque le bouton se ferme et n'est donc pas visible à la fin de l'animation.

Image non disponible

Le bouton est désactivé dès que l'animation démarre.