Développer un menu déroulant POO à l'aide de documents ActionScript 3.0

Dans ce premier tutoriel sur Flashtuts +, je vais expliquer rapidement comment créer un menu déroulant orienté objet. Nous allons utiliser ActionScript 3.0 et extraire toutes les données nécessaires d'un fichier XML..

Le menu résultant peut être utilisé dans n’importe quel fichier flash sans nécessiter de recodage.




Étape 1 - Définition du chemin de classe

Premièrement, nous allons configurer un chemin de classe. Si vous n'en avez pas encore, c'est un endroit utile pour placer les fichiers ActionScript que vous utilisez dans chaque projet. Ainsi, vous n'avez pas besoin de copier les fichiers ActionScript dans un dossier du document fla chaque fois que vous créez un nouveau site Web ou une nouvelle application..

Créez un dossier pour les fichiers ActionScripts dans c :. Je vais créer le dossier c: / myActionScripts, mais vous pouvez créer un répertoire n'importe où avec le nom de votre choix.

Pour flash CS3, accédez à Edition> Préférences. Dans le menu de catégories du panneau des préférences, sélectionnez "ActionScript". Sur le côté droit du panneau, cliquez sur le bouton "Paramètres ActionsScript 3.0"..

Cela ouvrira un autre panneau (panneau de paramètres Actionscript 3.0). Cliquez sur le bouton plus (+) et tapez "c: / myActionScripts", ou quel que soit l'emplacement de votre répertoire. Ensuite, cliquez sur OK dans tous les panneaux ouverts. Nous avons maintenant un chemin de classe..

Pour flash CS4, accédez à Edition> Préférences. Dans le menu de catégories du panneau des préférences, sélectionnez "ActionScript". Sur le côté droit du panneau, cliquez sur le bouton "Paramètres ActionsScript 3.0"..

Cela ouvrira un panneau appelé "Paramètres avancés d’Actionscript 3.0". Dans la zone "chemin source", cliquez sur le bouton plus (+) et tapez c: / myActionScripts, ou quel que soit l'emplacement de votre répertoire. Ensuite, cliquez sur OK dans tous les panneaux ouverts. Nous avons maintenant un chemin de classe..

Étape 2 - Télécharger des classes et créer des dossiers

Accédez à http://blog.greensock.com/tweenliteas3/ et téléchargez la classe TweenLite ActionScript 3.0, avec l'aimable autorisation de Jack Doyle. Cette classe est bien meilleure que la classe Tween intégrée dans Flash CS3 et Flash CS4.

Une fois le téléchargement terminé, décompressez simplement le contenu de "gs" dans le fichier .zip en c: / myActionScripts / gs pour que la classe TweenLite soit utilisable à tout moment, sans copier le dossier gs dans un dossier équivalent. de votre projet.

Créez également le dossier c: / myActionScripts / dropdownmenu. Nous allons placer les fichiers ActionScript de ce tutoriel ici. Nous pourrons ensuite utiliser notre objet DropDownMenu à tout moment, sans avoir à copier le dossier dropdownmenu dans chaque projet. C'est l'avantage d'utiliser un classpath.

Étape 3 - Création des documents XML

J'utiliserai 5 fichiers XML, un XML pour le menu déroulant principal et d'autres pour renseigner les données dans le deuxième menu déroulant. Enregistrez tous les fichiers XML dans c: / dropdownexample / xml.

Enregistrez le premier document XML sous le nom "menu.xml" dans le dossier "xml". Remplissez-le avec des données telles que:

      

Enregistrez un deuxième document XML sous le nom "contactlist1.xml" dans le dossier XML, avec les données suivantes:

          

Enregistrez un troisième document XML sous le nom "contactlist2.xml" dans le dossier XML, avec les données suivantes:

      

Enregistrez un autre document XML sous le nom "contactlist3.xml" dans le dossier XML, les données sont les suivantes:

       

Enfin, créez le dernier document XML sous le nom "contactlist4.xml", à nouveau dans le dossier XML avec les données suivantes:

       

Étape 4 - Codage de l'objet MenuItem

Nous allons maintenant commencer à coder l'objet MenuItem. Ceci est nécessaire pour notre menu déroulant et construira les éléments de la liste.

Commencez à créer le package, nous enregistrerons le fichier dans c: / myActionScripts / dropdownmenu pour que le package s'appelle "dropdownmenu", puis nous importerons les classes que nous voulons utiliser dans cet objet..

 package dropdownmenu import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; importer flash.events. *; importer gs.TweenLite;

Créez maintenant la classe MenuItem. Comme nous étendons la classe Sprite, nous aurons toutes les méthodes et propriétés de cette classe, mais nous ajouterons quand même plus.

Notez que nous enregistrerons ce fichier ActionScript sous le nom "MenuItem.as" dans le dossier dropdownmenu. Le package a donc le même nom que le dossier et la classe a le même nom que le fichier .as.

 Classe publique MenuItem étend Sprite 

Déclarez et définissez les variables ici pour pouvoir les utiliser avec n'importe quelle fonction de la classe. Nous allons les définir comme privés afin que seule cette classe y ait accès. Si vous déclarez les variables à l'intérieur d'une fonction, seule cette fonction aura accès à la variable. Dans notre cas, nous voulons que toute la classe ait accès aux variables.

private var _value: String; private var txt: TextField = new TextField (); private var txtFormat: TextFormat = new TextFormat ();

Nous allons déclarer la fonction suivante publique, afin que vous puissiez y accéder depuis n'importe où. Cette fonction a le même nom que la classe. C'est la fonction constructeur et sera appelée lors de l'instanciation de cet objet. Ce sera la première fonction à être exécutée et sera exécutée chaque fois que vous créez un nouvel objet de MenuItem. La fonction constructeur est toujours publique.

Nous allons passer les légendes, les valeurs, les valeurs de largeur et de hauteur via le constructeur:

 public function MenuItem (légende: String, valeur: String, _width: int = 200, _height: int = 20): void 

Nous allons maintenant définir cette classe sur "buttonMode", ainsi elle se comportera comme un bouton et le curseur de la main s'affichera chaque fois que vous passerez la souris dessus. Nous avons défini l'alpha sur .8 (ce sera l'état de sortie de la souris). Nous avons déjà déclaré la variable _value en dehors de la fonction. Nous rendons donc la valeur visible pour toute autre fonction de la classe et la largeur _width que nous réduisons de 10 , donc l'élément de menu sera un peu plus petit.

this.buttonMode = true; this.alpha = 0,8; _value = valeur; _width- = 10

Dessinez un rectangle noir pour le fond (cela peut être n'importe quelle couleur, changez simplement le 0x000000 comme bon vous semble).

this.graphics.beginFill (0x000000); this.graphics.drawRect (0,0, _width, _height);

Nous allons maintenant définir l'objet de format de texte. Il est créé en dehors de la fonction et sera accessible à toutes les fonctions de cette classe. Ce sera la légende de notre article (un champ de texte dynamique).

txtFormat.color = 0xFFFFFF; txtFormat.size = 10; txtFormat.font = "Verdana";

Nous allons maintenant définir le format de champ de texte par défaut sur l'objet de format de texte. Nous allons désactiver l'interactivité de la souris du champ de texte afin que le texte ne soit pas cliquable (cela fonctionne avec n'importe quel objet affiché). Nous allons définir le texte du champ de texte dynamique txt comme variable "légende" transmise par le paramètre constructeur. Il s’agit ensuite de définir la position x et y du champ de texte, ainsi que sa largeur et sa hauteur. Ensuite, nous ajoutons le texte à la liste d'affichage de l'objet MenuItem.

txt.defaultTextFormat = txtFormat; txt.mouseEnabled = false; txt.text = caption; txt.x = 5; txt.y = 2; txt.width = _width-10; txt.height = _height-4; addChild (txt);

Ajoutons maintenant les événements. Lorsque nous ajoutons cet objet à la scène, la fonction addedToStage sera appelée. Lorsque nous passons la souris sur l'objet, la fonction mouseOver sera appelée. Lorsque nous retirons la souris de cet objet, la fonction mouseOut sera appelée. Nous fermons également la fonction constructeur avec un "" à la fin.

addEventListener (Event.ADDED_TO_STAGE, addedToStage); addEventListener (MouseEvent.MOUSE_OVER, mouseOver); addEventListener (MouseEvent.MOUSE_OUT, mouseOut); 

Insérer une nouvelle fonction ici. Lorsque la souris est au-dessus de l'objet, l'alpha est réglé sur 1, de sorte que cet objet est différent des autres (état survolé par la souris)..

fonction privée mouseOver (e: MouseEvent): void new TweenLite (this, 1, alpha: 1); 

Lorsque nous retirons la souris de l'objet, l'alpha sera progressivement redéfini sur .8 (l'état de sortie de la souris).

fonction privée mouseOut (e: MouseEvent): void new TweenLite (this, 1, alpha: .8); 

Lorsque cet objet est ajouté à la scène, nous définissons la position de l'objet en obtenant son index dans la liste d'affichage et en le multipliant par sa hauteur. Nous avons une suite d'index (0, 1, 2, 3) et allons positionner un objet sur l'autre, pas l'un sur l'autre.

fonction privée addedToStage (e: Event): void this.y = this.parent.getChildIndex (this) * this.height; 

La fonction "get" est une propriété, elle fonctionne comme une variable mais elle est en lecture seule. Vous ne pouvez pas définir ces valeurs en dehors de cette classe, mais vous pouvez les lire. Ils renvoient la valeur de variables ou de champs de texte inaccessibles en dehors de la classe.

fonction publique get caption (): String return txt.text;  fonction publique get value (): String return _value; 

Fermez maintenant la classe et le paquet que nous avons ouverts au début du fichier. Enregistrez-le sous "MenuItem.as" dans c: / myActionScripts / dropdownmenu, le fichier doit se trouver dans c: /myActionScripts/dropdownmenu/MenuItem.as.

 

Étape 5 - Créer l'événement personnalisé

Nous allons maintenant créer un événement personnalisé pour cette classe. Lorsque nous changeons l'élément de menu, nous obtenons la valeur via cet événement..

Démarrez le package, importez l'événement et créez la classe qui étend la classe d'événement. Nous avons maintenant une nouvelle classe Event que nous appellerons "DropDownMenuEvent".

package dropdownmenu import flash.events.Event; Classe publique DropDownMenuEvent extend Event 

Il est possible d'accéder aux variables statiques, aux fonctions ou aux constantes sans avoir à instancier l'objet. Vous n'avez pas besoin d'utiliser la nouvelle instruction, vous pouvez simplement y accéder en utilisant: DropDownMenuEvent.CHANGE

Les const sont des constantes. Une fois que vous avez défini une valeur sur const, sa valeur ne peut plus être modifiée. Vous pouvez utiliser des minuscules pour nommer les constantes, mais par défaut presque tout le monde utilise des majuscules pour les constantes et nous ne ferons pas de différence..

public static const CHANGE: String = "change";

Instanciez ces objets String ici pour assurer l'accès depuis n'importe où dans cette classe.

private var _caption: String; private var _value: String;

Créez maintenant la fonction constructeur. Le super (type) est de définir cette classe comme une superclasse.

fonction publique DropDownMenuEvent (type: chaîne, légende: chaîne, valeur: chaîne): void super (type); _caption = légende; _value = valeur; 

Créez maintenant les fonctions getter de la classe, pour obtenir les valeurs en lecture seule. J'ai déjà expliqué comment fonctionne la fonction getter.

fonction publique get caption (): String return _caption;  fonction publique get value (): String return _value; 

Fermez le package et la classe en utilisant "" et enregistrez-le sous c: /myActionScripts/dropdownmenu/DropDownMenuEvent.as.

 

Étape 6 - Créer l'objet DropDownMenu

J'ai sauvé cet objet pour la fin parce que c'est plus complexe. En outre, cela ne fonctionnera pas sans les 2 classes créées ci-dessus.

Cette partie est déjà bien expliquée. nous allons définir le paquet, importer toutes les classes que nous allons utiliser, créer la classe qui étend le Sprite, définir les variables en dehors des fonctions à utiliser avec toute autre fonction de cette classe, puis lancer la fonction constructeur. Rien de nouveau ici.

Je ne devrais pas non plus avoir besoin de répéter que la classe, le constructeur et le nom du fichier sont les mêmes.

La fonction constructeur ayant tous les paramètres prédéfinis, nous pouvons choisir de transmettre ou non les paramètres. Nous pourrions ne transmettre que le premier paramètre, ou le premier et le deuxième, ou le premier, le deuxième et le troisième. Nous pourrions aussi passer le premier paramètre comme null, donc ce sera la même valeur que la valeur prédéfinie dans le constructeur.

package dropdownmenu import flash.display.Sprite; import flash.display.Shape; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFormat; import flash.xml. *; importer flash.events. *; import flash.display.Graphics; import flash.display.GradientType; import flash.geom.Matrix; import flash.display.SimpleButton; importer gs.TweenLite; Classe publique DropDownMenu étend Sprite conteneur privé var: Sprite = new Sprite (); private var req: URLRequest = new URLRequest (); private var loader: URLLoader = new URLLoader (); private var txt: TextField = new TextField (); private var txtFormat: TextFormat = new TextFormat (); bouton var privé: SimpleButton = new SimpleButton (); private var _value: String; fonction publique DropDownMenu (url: String = null, _width: int = 200, _height: int = 30): void 

Le conteneur est un sprite, créé ci-dessus en dehors de toute fonction pour la classe entière ont accès. Nous allons mettre tous les éléments de menu à l'intérieur du conteneur; définissez la propriété y sur le paramètre _height. Le conteneur sera invisible pour commencer (alpha = 0), vous ne pouvez donc pas cliquer dessus. Même s'il était visible, l'alpha est toujours 0, donc il ne s'affichera pas encore.

container.y = _height; container.alpha = 0; container.visible = false; addChild (conteneur);

Créez un arrière-plan et ajoutez-le à l'objet. DrawObject est une fonction qui retourne une forme, nous verrons cela un peu plus tard.

var bg: Shape = drawObject (_width, _height); addChild (bg);

De nouveau, nous définissons les propriétés de l'objet textFormat et la propriété defaultTextFormat de l'objet txt en tant qu'objet textFormat. Nous désactivons l'interactivité avec la souris, définissons un texte par défaut pendant que le fichier xml n'est pas encore chargé et ajoutons le texteTxt à la liste d'affichage de cet objet. Toutes ces actions ont été vues auparavant, elles n'ont donc pas besoin de trop d'explications.

txtFormat.bold = true; txtFormat.size = 15; txtFormat.font = "Verdana"; txt.defaultTextFormat = txtFormat; txt.x = 5; txt.y = 3; txt.width = _width-10; txt.height = _height-6; txt.mouseEnabled = false; txt.text = "XML non chargé"; addChild (txt);

Le bouton, créé en dehors de la fonction, peut être accédé de n'importe où dans cette classe. Nous définissons une nouvelle forme pour hitTestState, puis ajoutons un événement. Lorsque vous cliquez dessus, la fonction "open" sera appelée. Nous ajoutons ensuite le bouton à la liste d'affichage de cet objet.

button.hitTestState = drawObject (_width, _height); button.addEventListener (MouseEvent.CLICK, ouvert); addChild (bouton);

Ajoutez maintenant les écouteurs d'événement. Un pour le chargeur lorsque le chargeur a complètement terminé le chargement du document XML. Cela appellera la fonction loaderComplete, ou si le chargeur ne trouve pas le document XML, il appellera la fonction loaderIOError.

Cette classe, lorsqu'elle est ajoutée à la scène, appellera la fonction addedToStage. Une fois retiré de l’étape, la fonction removedFromStage sera appelée..

loader.addEventListener (Event.COMPLETE, loaderComplete); loader.addEventListener (IOErrorEvent.IO_ERROR, loaderIOError); addEventListener (Event.ADDED_TO_STAGE, addedToStage); addEventListener (Event.REMOVED_FROM_STAGE, removedFromStage);

Ici, nous vérifions si une valeur autre que null a été transmise à l'url param du constructeur. Si tel est le cas, nous allons définir l'URL (URL privée var: URLRequest = new URLRequest ()) et appeler la fonction load. Fermez la fonction constructeur avec un ""

si (url) charge (url); 

Comme la fonction de chargement est publique, elle vous permet de charger xml n’importe où en dehors ou à l’intérieur de cette classe. Tout d'abord, cette fonction supprimera tous les éléments de menu à l'intérieur du conteneur. S'il en existe, il commencera à charger le document XML..

fonction publique load (url: String): void txt.text = "Loading"; _value = null; total de var: int = conteneur.numChildren; pour (var i: int = 0; i 

Cette fonction sera appelée lorsque vous appuierez sur le bouton. Il vérifiera si l'alpha du conteneur est égal à zéro. Si tel est le cas, il définira la visibilité du conteneur sur true, alpha sur 0 et fixera l'alpha du conteneur sur 1. Si l'alpha du conteneur est déjà supérieur à 0, la fonction de fermeture sera appelée..

fonction privée ouverte (e: MouseEvent): void if (container.alpha == 0) container.visible = true; container.alpha = 0; nouveau TweenLite (conteneur, .5, alpha: 1);  else close (); 

La fonction de fermeture sera appelée lorsque vous cliquerez n'importe où, car nous ajouterons un événement à la scène lorsque la souris sera enfoncée. Cette fonction vérifie si l'alpha d'un conteneur est supérieur à 0. Si c'est le cas, il définira l'alpha du conteneur sans à-coups. Une fois l'opération terminée, la fonction hideContainer () définira la visibilité du conteneur sur false (invisible et non cliquable)..

Nous allons ajouter un événement à la scène, MouseEvent.MOUSE_DOWN, afin que la fonction stageMouseDown.

fonction privée close (): void if (conteneur.alpha> 0) nouveau TweenLite (conteneur, .5, alpha: 0, onComplete: hideContainer);  fonction privée hideContainer (): void conteneur.visible = false;  fonction privée stageMouseDown (e: MouseEvent): void this.close ();  fonction privée stageMouseLeave (e: Event): void this.close (); 

loaderIOError sera appelé si la fonction de chargement du chargeur ne trouve pas le document XML et définit la légende sur "XML non trouvé"..

AddedToStage sera appelé lorsque cet objet sera ajouté à la liste d’affichage de la scène. Il va ajouter un événement pour quand vous cliquez n'importe où sur la scène pour appeler la fonction stageMouseDow.

RemovedFromStage sera appelé lorsque cet objet sera supprimé de la scène. Il supprime l'événement de la scène de sorte que les clics sur la scène n'appellent plus la fonction stageMouseDown..

Lorsque la souris quittera la scène, nous fermerons également le menu déroulant..

fonction privée loaderIOError (e: IOErrorEvent): void txt.text = "XML non trouvé";  fonction privée addedToStage (e: Event): void stage.addEventListener (MouseEvent.MOUSE_DOWN, stageMouseDown); stage.addEventListener (Event.MOUSE_LEAVE, stageMouseLeave);  fonction privée removeFromStage (e: Event): void stage.removeEventListener (MouseEvent.MOUSE_DOWN, stageMouseDown); stage.removeEventListener (Event.MOUSE_LEAVE, stageMouseLeave); 

La fonction loaderComplete est appelée lorsque le XML est complètement chargé, il fonctionnera comme ceci:

  • Définissez le texte par défaut de l'objet txt sur "Select" et la valeur sur null. Par conséquent, nous n'avons pas de valeur et la légende par défaut est simplement "Select".
  • Créer une nouvelle instance XML
  • Vérifiez le nombre total de nœuds qui ont un balise dans le document XML et insérer dans la variable "total".
  • Boucle les valeurs du document XML, en obtenant leurs propriétés de légende et valeur. Les propriétés en XML sont obtenues par @property et la valeur du nœud juste .node sans @.
  • Créez un nouvel objet MenuItem avec une instance de menuItem, en transmettant la légende et la valeur au constructeur MenuItem..
  • Ajoutez un événement au menuItem. Lorsque vous cliquez dessus, la fonction menuItemClick sera appelée..
  • Ajoutez le menuItem que vous venez de créer à la liste d'affichage du conteneur.
  • Définit la position x du conteneur au centre de l'objet DropDownMenu à l'aide d'un calcul.
fonction privée loaderComplete (e: Event): void txt.text = "Select"; _value = null; var xml: XML = XML (e.target.data); total de var: int = xml.item.length (); var _w: int = this.width; var _h: int = this.height; pour (var i = 0; i 

La fonction menuItemClick sera appelée lorsque vous cliquez sur un objet d'élément de menu, le paramètre currentTarget obtiendra l'objet sur lequel vous avez cliqué..
Nous comparons la valeur réelle de DropDownMenu Object à la valeur de l'élément de menu cliqué et comparons le texte actuel du champ de texte txt à la légende de l'élément de menu. S'il y a une différence dans la valeur, la fonction enverra un nouveau DropDownMenuEvent en passant le nouveau libellé et la nouvelle valeur..

fonction privée menuItemClick (e: MouseEvent): void if (e.currentTarget.value! = _ valeur && e.currentTarget.caption! = txt.text) dispatchEvent (nouveau DropDownMenuEvent (DropDownMenuEvent.CHANGE, e.currentTarget.caption, e) .currentTarget.value)); _value = e.currentTarget.value; txt.text = e.currentTarget.caption; 

C’est la fonction que nous avons utilisée pour créer l’arrière-plan et l’état de frappe du bouton. Dans la fonction constructeur, cette fonction renvoie un nouvel objet Shape..

fonction privée drawObject (_width: int, _height: int): Shape var newShape = new Shape (); var couleurs = [0xA6A6A6,0x515151]; var alphas = [1,1]; rapports var = [0,255]; var radians: Number = 90 * (Math.PI / 180); var matrix: Matrix = new Matrix (); matrix.createGradientBox (_width, _height, radians); newShape.graphics.beginGradientFill (GradientType.LINEAR, couleurs, alphas, rapports, matrice); newShape.graphics.drawRoundRect (0,0, _width, _height, 5,5); renvoyer newShape; 

Nous créons 2 propriétés en lecture seule, une pour obtenir la légende et l'autre pour obtenir la valeur de cet objet. Ces 2 propriétés seront visibles en dehors de la classe, mais ne pourront pas être modifiées en dehors de la classe, uniquement en lecture..

Utilisez 2x "" pour fermer le paquet et la classe.

fonction publique get caption (): String return txt.text;  fonction publique get value (): String return _value; 

Enregistrez maintenant ce fichier sous c: /myActionScripts/dropdownmenu/DropDownMenu.as. Nous avons 3 fichiers dans le menu c: / myActionScripts / dropdown:

  1. DropDownMenu.as
  2. MenuItem.as
  3. DropDownMenuEvent.as

Maintenant nous avons un paquet dropdownmenu avec 3 classes.

Étape 7 - Le .fla et la classe de document

Dans Flash, sélectionnez Fichier> Nouveau..

Sélectionnez le fichier Flash (ActionScript 3.0) et cliquez sur OK..

Ensuite, allez dans Fenêtre> Propriétés. Le panneau des propriétés s'ouvrira

Dans le panneau des propriétés, entrez "Main" dans la zone de texte Classe (sans "surround") et enregistrez votre fichier .fla dans c: /dropdownexample/dropdown.fla (rappelez-vous que nous avons déjà le dossier c: / dropdownexample dans lequel se trouve le dossier xml..

Étape 8 - Codage de la classe de document principale

Créer un nouveau document de fichier ActionScript (Fichier> Nouveau> Fichier ActionScript).

Nous allons enregistrer le document dans le même dossier que le document .fla, sous le nom Main.as. Cette classe appartient au paquetage TopLevel, son paquet est donc juste un paquetage…

Nous importons les classes nécessaires. Notez que nous importons tous les packages dropdownmenu. Ainsi, les trois fichiers créés ci-dessus (DropDownMenu, DropDownMenuEvent et MenuItem) seront importés dans la classe Main..

package import flash.display.Sprite; menu déroulant d'importation. *; importer flash.events. *; public class Main étend Sprite 

Attention ici, nous créons 2 menus déroulants; le premier menu déroulant sélectionnera un nouveau document XML et fera charger le deuxième menu déroulant la valeur sélectionnée.

Le premier paramètre, s'il n'est pas null, chargera automatiquement le document XML lors de la création de cet objet. Le deuxième paramètre est la largeur du menu déroulant. Nous n'avons pas passé le troisième paramètre; la hauteur du menu déroulant, mais nous avons défini la valeur par défaut sur 30, ce qui, à mon avis, est une bonne hauteur.

Le premier menu déroulant charge automatiquement le XML appelé menu.xml dans le dossier XML, le second charge un fichier XML uniquement lorsque nous utilisons la fonction de chargement..

private var d1: DropDownMenu = new DropDownMenu ("xml / menu.xml", 150); private var d2: DropDownMenu = new DropDownMenu (null, 150);

Nous créons le constructeur. Comme cette classe est la classe du document, la fonction sera appelée lors de la compilation du fichier .swf et à chaque fois que nous ouvrirons le fichier .swf. Nous ajoutons les deux menus déroulants que nous avons créés, définissons la position x des deux, puis leur attribuons la même valeur y. Ajoutez des écouteurs d'événement aux deux menus déroulants, lorsque nous changerons la valeur que nous appellerons pour les écouteurs..

fonction publique Main (): void addChild (d1); addChild (d2); d1.x = 50; d2.x = 210; d1.y = d2.y = 40; d1.addEventListener (DropDownMenuEvent.CHANGE, d1Change); d2.addEventListener (DropDownMenuEvent.CHANGE, d2Change); 

C'est l'écouteur du menu déroulant 1. Lorsque la valeur d1 change, il charge sa valeur dans le menu déroulant d2.

fonction privée d1Change (e: DropDownMenuEvent): void d2.load (e.value); 

Ceci est juste pour tester le deuxième menu déroulant, mais vous pouvez obtenir les valeurs du menu déroulant en obtenant instance.value et obtenir les légendes du menu déroulant en récupérant instance.caption..

fonction privée d2Change (e: DropDownMenuEvent): void trace (e.caption + "=" + e.value); // ou trace (d2.caption + "=" + e.value); 

Fermez le paquet et la classe avec 2x ""

 

Nous avons maintenant la classe Main pour tester notre travail. Il vous suffit de sauvegarder dans c: /dropdowexample/Main.as et de compiler le document dropdown.fla. Testez-le en flash pour que la trace fonctionne.

Les légendes et les valeurs peuvent bien sûr être tout ce que vous voulez.

Conclusion

Les classes sont un peu grandes, mais elles sont correctement codées, ne comportent pas de bugs et vous pouvez les utiliser quand vous voulez en important simplement le package dropdownmenu et en créant des objets DropDownMenu. Les classes et la classe Document constituent la plus grande différence entre ActionScript 2.0 et 3.0. Quiconque apprend à travailler avec des fichiers ActionScript et à utiliser le classpath le trouvera bien mieux que d'utiliser le scénario pour coder.

C'est tout pour le moment!