Partager via


Changement d’une animation avec du code côté client (VB)

par Christian Wenz

Télécharger le PDF

Le contrôle Animation dans le ASP.NET ajax Control Toolkit n’est pas seulement un contrôle, mais un framework entier pour ajouter des animations à un contrôle. L’animation peut également être modifiée à l’aide du code JavaScript côté client personnalisé.

Vue d’ensemble

Le contrôle Animation dans le ASP.NET ajax Control Toolkit n’est pas seulement un contrôle, mais un framework entier pour ajouter des animations à un contrôle. L’animation peut également être modifiée à l’aide du code JavaScript côté client personnalisé.

Étapes

Tout d’abord, incluez le ScriptManager dans la page ; puis, le ASP.NET bibliothèque AJAX est chargé, ce qui permet d’utiliser control Toolkit :

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

L’animation sera appliquée à un panneau de texte qui ressemble à ceci :

<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>

Dans la classe CSS associée pour le panneau, définissez une couleur d’arrière-plan agréable et définissez également une largeur fixe pour le panneau :

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

L’animation réelle est lancée par un bouton HTML :

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

Ensuite, ajoutez à AnimationExtender la page, en fournissant un ID, l’attribut TargetControlID et le obligatoire runat="server":

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

Notez qu’il n’existe aucun <Animations> nœud dans le AnimationExtender contrôle. Le code JavaScript personnalisé est utilisé pour fournir les animations à utiliser avec le contrôle.

Comme avec l’API de serveur de AnimationExtender, il n’existe pas encore de moyen simple d’affecter une animation au extendeur. Toutefois, l’extension expose plusieurs méthodes pour lire et écrire des animations inscrites avec les différents événements (OnClick, OnLoad, etc.). Voici quelques exemples :

  • get_OnClick()
  • set_OnClick()
  • get_OnLoad()
  • set_OnLoad()
  • ...

Le format de la valeur de retour des get_*() fonctions et le format de l’argument pour les set_*() fonctions est une chaîne JSON, qui fournit une représentation d’objet de ce que serait le balisage XML. Actuellement, il n’existe aucun moyen de passer un objet dans, mais il est possible de lire un objet à partir d’une animation donnée (get_OnXXXBehavior() méthodes).

Voici une chaîne JSON (sans guillemets délimitants et correctement mis en forme) qui représente une animation déclenchée par le bouton, mais qui anime le panneau en le redimensionner et en le décolorant en même temps :

{
 "AnimationName":"Sequence",
 "AnimationChildren":[
 {
 "AnimationName":"EnableAction",
 "Enabled":"false",
 "AnimationChildren":[]
 },
 {
 "AnimationName":"Parallel",
 "AnimationChildren":[
 {
 "AnimationName":"FadeOut",
 "Duration":"1.5",
 "Fps":"24",
 "AnimationTarget":"Panel1",
 "AnimationChildren":[]
 },
 {
 "AnimationName":"Resize",
 "Width":"1000",
 "Height":"150",
 "Unit":"px",
 "AnimationTarget":"Panel1",
 "AnimationChildren":[]
 }]
 }]
}

Le code JavaScript suivant affecte ce descripteur JSON à l’animation OnClick de l’extension actuelle et l’exécute :

<script type="text/javascript">
 function pageLoad() 
 {
 var ae = $find("ae");
 var animation = '{"AnimationName":"Sequence","AnimationChildren":[{"AnimationName":"EnableAction","Enabled":"false","AnimationChildren":[]},{"AnimationName":"Parallel","AnimationChildren":[{"AnimationName":"FadeOut","Duration":"1.5","Fps":"24","AnimationTarget":"Panel1","AnimationChildren":[]},{"AnimationName":"Resize","Width":"1000","Height":"150","Unit":"px","AnimationTarget":"Panel1","AnimationChildren":[]}]}]}';
 ae.set_OnClick(animation);
 ae.OnClick();
 }
</script>

L’animation s’exécute immédiatement, sans clic de souris (et avec très peu de balisage)

L’animation s’exécute immédiatement, sans clic de souris (et avec très peu de balisage) (cliquer pour afficher l’image en taille réelle)