Affichage des articles dont le libellé est AS3. Afficher tous les articles
Affichage des articles dont le libellé est AS3. Afficher tous les articles

vendredi 27 novembre 2009

Formation et Tutorial actionscript pour Flash AS3

Formation et tutoriel Actionscript pour Flash AS3

 Formation actionsript Flash pour Flash AS2

      Actionscript structure boucle for var et MULTIPLICATION DYNAMIQUE DES OCCURRENCES

      MULTIPLICATION DYNAMIQUE DES OCCURRENCES ActionScript CS3 : les structures de boucles

      Nous allons pouvoir également créer 6 copies de cette occurrence et les placer en-dessous de la première.
      Nous allons pour cela utiliser une boucle de traitement « for ».

      Structure de la boucle for :
      for (var i:int=0; i<6; i++){
      faireCela;
      }
      La commande « faireCela » sera exécutée 6 fois, depuis la valeur 0 prise par la variable locale i jusqu'à la valeur 5 prise par celle-ci.
      Ici nous allons ajouter dans notre fonction constructeur :
      for (var i:int=0; i<6; i++){
      }
      Afin de:
      • créer une nouvelle occurrence de MC_perso nommée monPerso2;
      • placer verticalement cette occurrence;
      • placer horizontalement cette occurrence en décalage par rapport à la précédente;
      • diminuer la largeur de cette occurrence;
      • diminuer la hauteur de cette occurrence;
      • ajouter cette occurrence à la liste d'affichage
      Ce code sera après le précédent « addChild », ce qui donnera :
      for(var i:int=0; i<6; i++){
      var monPerso2:MC_perso = new MC_perso ();
      monPerso2.x = 80*i+70;
      monPerso2.y = 300;
      monPerso2.scaleX = .3;
      monPerso2.scaleY = .3;
      addChild (monPerso2);
      }

      Dans la ligne monPerso2.x = 80*i+70;

      80 est le pas de déplacement horizontal de la nouvelle occurrence par rapport à la précédente, 70 est la coordonnée x de la première des occurrences créée dans la boucle.

      CODE COMPLET SCRIPT AS3 MANIPULATION DYNAMIQUE OCCURRENCES CLIP

      package{

      import flash.display.*;
      public class perso_01 extends MovieClip {
      public function perso_01 () {
      var monPerso:MC_perso = new MC_perso ();
      monPerso.x = 150;
      monPerso.y = 120;
      monPerso.scaleX = .7;
      monPerso.scaleY = .7;
      addChild (monPerso);
      for (var i:int=0; i<6; i++){
      var monPerso2:MC_perso = new MC_perso ();
      monPerso2.x = 80*i+70;
      monPerso2.y = 300;
      monPerso2.scaleX = .3;
      monPerso2.scaleY = .3;
      addChild (monPerso2);
      }
      }
      }
      }

      Actionscript import flash.display addChild Manipuler dynamiquement des occurrences de clips

      Manipuler dynamiquement des occurrences de clips avec AS3

      Dans Flash CS3 il y a plusieurs manières de travailler directement avec des occurrences de clips.

      La plus classique est de nommer l'occurrence d'un clip placée sur un scénario, en passant par l'inspecteur de propriétés de cette occurrence.

      Avec ActionScript AS3 on va le plus souvent procéder autrement afin de piloter dynamiquement les occurrences à partir d'un fichier de code externe « .as ».

      Copiez sur votre disque puis ouvrez le fichier « perso_01.fla ». Il contient seulement un clip de bibliothèque (un personnage vectoriel).

      Sélectionnez le clip directement dans la bibliothèque puis ouvrez le panneau « liaison » dans le menu déroulant de la bibliothèque, ou bien par clic droit sur l'icône de ce clip. Le panneau « propriétés de liaison » apparaît. Cochez la case « exportez pour ActionScript ».

      Le panneau se modifie comme suit : Flash donne à la classe qu'il associe au clip le nom du clip. Il est préférable de conserver cette logique. Il définit par défaut la classe associée. Celle-ci est ici la classe MovieClip. Conservez la case cochée « exporter dans la première image ».

      Vérifiez dans le panneau de propriétés de l'animation que votre animation est bien liée à la classe « perso_01 » (case « classe du document »). Créez maintenant un nouveau fichier ActionScript que vous nommerez immédiatement « perso_01.as ».

      Fenêtre propriétés de lien de Flash
      Fenêtre propriétés de lien de Flash
      Commencez par inclure la classe d'affichage des objets sur la scène :
      package {
      import flash.display.*;

      Créez ensuite une classe publique « perso_01 » liée à la classe interne « MovieClip »
      public class perso_01 extends MovieClip {

      Créez ensuite une fonction constructeur publique « perso_01 »
      public function perso_01() {
      var monPerso:MC_perso = new MC_perso ();
      addChild (monPerso);

      Nous avons d'abord créée une occurrence « monPerso » de la classe exportée à partir du clip. Ensuite nous ajoutons cette occurrence à la liste d'affichage grâce à « addChild ».

      Ce qui donne le code complet :
      package {
      import flash.display.*;
      public class perso_01 extends MovieClip {
      public function perso_01() {
      var monPerso:MC_perso = new MC_perso ();
      addChild (monPerso);
      }
      }
      }

      Enregistrez votre fichier de code afin de valider votre script. Sélectionnez l'onglet de l'animation « perso_01.fla » et testez par Ctrl + entrée.

      REMARQUE
      vous devez tester depuis l'animation et non depuis le fichier de code.
      Il faut veiller à enregistrer les dernières modifications avec de publier.

      Vous devez visualiser seulement une partie du personnage, en haut à gauche de la scène. En effet, par défaut l'occurrence du clip créée a pour coordonnées (0,0). Donc le centre de l'occurrence coïncide avec le coin supérieur gauche de la scène.
      Nous allons maintenant ajouter des lignes de code dans la fonction constructeur afin de déplacer l'occurrence et de réduire son échelle d'affichage:

      public function perso_01() {
      var monPerso2:MC_perso = new MC_perso ();
      monPerso.x = 150;
      monPerso.y = 120;
      monPerso.scaleX = .7;
      monPerso.scaleY = .7;
      addChild (monPerso);
      }

      COMMENTAIRES CODE AS3

      accès aux coordonnées :

      monOccurrence.x pour la coordonnée x de monOccurrence
      monOccurrence.y
      pour la coordonnée y de monOccurrence

      accès à l'échelle :

      monOccurrence.scaleX pour l'échelle de la largeur de monOccurrence (nombre décimal entre 0 et 1, valeur 1 = 100% de la largeur d'origine);

      monOccurrence.scaleY pour l'échelle de la hauteur de monOccurrence (idem)

      ATTENTION :
      EN ACTIONSCRIPT AS3 on ne fait plus précéder les méthode d'un underscore.

      Enregistrez votre fichier de code afin de valider votre script. Testez par Ctrl + entrée.

      mercredi 25 novembre 2009

      Flash et le référencement naturel dans les moteurs de recherche.

      Flash et le référencement naturel, comment l'optimiser?

      Le référencement est l'ensemble des techniques qui permettent d'inscrire un site dans les moteurs de recherche ou dans les annuaires. Le positionnement, représente l'art d'optimiser la place du site dans les réponses fournies par les moteurs de recherche.

      Une animation en Flash (ou un menu ou toute autre interface) placée dans une page web se présente sous le forme d'un fichier « Shockwave Flash » (extension « .swf »). La page web contenant ce fichier est une page HTML avec une balise qui indique au navigateur d'inclure ce fichier Flash.

      Le problème lié au référencement est que la plupart des robots d'indexation ne "voient" pas le contenu du fichier Flash, ils n'indexent, pour la plupart, que du contenu textuel au format HTML. Si tout le site est construit en Flash, le robot ne verra que des fichiers HTML quasi vides, ce qui sera catastrophique du point de vue du référencement.

      Comment référencer un site en Flash ?

      Pour mettre en ligne un projet Flash au moins une page HTML est nécessaire, celle qui "lance" l'animation Flash. Cette page est prise en considération par les moteurs.

      Il faut donc utiliser de la façon la plus optimisée possible les balises HTML de cette page:
      • balise TITLE : certainement la plus importante, contenant les mots clés du contenu de l'animation.
      • balise META NAME="DESCRIPTION" CONTENT contentant une description simple du contenu de l'animation, avec des mots clés résumant la page.
      • balise META "Keywords" ne soit quasiment plus prise en compte aujourd'hui, mais un doute subsiste.
      • balise NOEMBED Insérer le plus possible de texte (sans spammer, c'est-à-dire sans répétition abusive de mots clés), mais cette balise n'est pas conforme aux recommandations du W3C. Attention au blacklistage par sa mauvaise utilisation, avec l'utilisation de mots clefs sans rapport au contenu de fichier Flash.
      • balise OBJECT avec du texte alternatif, qui peut aussi inclure des liens,
      • balise ALT du fichier SWF remplie.

      Les alternatives pour référencer un site en Flash:

      • Il faut proposer en ligne une version HTML du site avec du contenu texte.
      • Lier des fichiers textes (txt, PDF,...) au site Flash (voir Utilisation du texte dans Flash )
      • Passer par les offres de positionnement publicitaire comme Adwords pour être certain d'être en tête de liste.
      • intégrer l'animation avec swfObject.
      • Utilisation de swfAddres pour l'accès direct. 

      Certains moteurs de recherche indexent le Flash

      Certains moteurs commencent à s'intéresser au problème de l'indexation des documents Flash d'une part pour se démarquer de leurs concurrents, et d'autre part pour rendre "visibles" tous les sites créés uniquement en Flash. Mais attention de ne pas vectoriser les polices utilisées. Un choix est à faire au moment de la conception.

      Fonctionnement texte dans Flash : statique, saisie, dynamique, TXT, XML

      Le logiciel Flash peut être utilisé à plusieurs niveaux :

      • on peut créer une animation simple pour une page web. Cette animation peut ou non contenir des éléments interactifs internes,
      • on peut insérer une animation interactive dans une page web et programmer son interactivité pour qu'elle modifie le contenu de la page. C'est le cas des menus interactifs en Flash par exemple,
      • on peut également créer un site entièrement en Flash. Dans ce cas la première animation du projet sera placée dans une page HTML nommée « index.htm ». Cette page - ainsi que l'ensemble des fichiers qui composent le site - seront mis en ligne sur le serveur contenant le projet.

      Utilisation du texte dans le logiciel Flash :

      Le logiciel Flash propose un outil texte qui permet de créer des textes de 3 natures différentes :
      • texte statique : il s'agit d'affichage de texte standard (éléments « graphiques »),
      • texte de saisie : cela permet à l'utilisateur d'entrer des informations qui pourront être traitées par le programme,
      • texte dynamique : cela permet au programme d'afficher des informations à l'utilisateur.

      On peut également travailler le texte de façon beaucoup plus dynamique :

      • on peut lier des fichiers textes.txt externes qui apparaîtront dans des champs textes dynamiques à l'intérieur de l'application Flash,
      • on peut utiliser des langages de programmation et des bases de données qui pourront dialoguer avec le logiciel Flash : XML, php / mysql...
      Ces deux dernières techniques facilitent énormément les mises à jour de contenu. On les utilisera pour la gestion de contenu d'un site Flash en CMS.

      mardi 24 novembre 2009

      Comparatif comparaison Flash et Director

      Présentation du logiciel Flash et comparaison avec le logiciel Director


      Le logiciel Flash permet de créer des fichiers auto-executable au format PC et Mac . Ces publications principales sont sur Internet. Mais il est aussi maintenant très facile de créer une application off-line avec Flash. Au lieu de créer une page web « index » contenant la première animation du projet, on va créer un fichier auto-exécutable à partir de cette première animation. Sur PC cet « auto-exe » sera très facilement associé à un fichier « autorun » qui permet de lancer automatiquement la lecture de l'application lorsque l'on insère le CD-Rom dans le lecteur. Un projet de CD-Rom en Flash est construit exactement de la même manière qu'un projet on-line.
      Un autre logiciel du même éditeur (Macromedia) est dédié à la fabrication de CD-Rom. Il s'agit de Director.
      Le logiciel Director est un logiciel auteur qui possède aussi un langage de programmation natif, le « LINGO ». C'est un langage très intuitif, avec une syntaxe beaucoup moins stricte que d'autres langages. Director n'est pas un logiciel d'animation, mais plutôt un assembleur de médias.

      Director est dédié aux médias « lourds » : bitmaps plein écran en haute qualité, ce logiciel est particulièrement performant pour la gestion de la vidéo « plein écran ».
      Jusqu'aux versions récentes de Flash (à partir de la version 8 essentiellement), Director gardait un avantage certain pour l'utilisation et le pilotage de la vidéo. Depuis que Adobe à racheter Macromedia et depuis les possibilités de lecture de vidéo externe en streaming, Flash tend à supplanter Director sur ce marché.

      De plus Director est un outil beaucoup plus couteux que Flash ce qui a également pour conséquence de réduire son implantation. Enfin il y a beaucoup moins de personnes formées sur Director que sur Flash, car Flash s'est beaucoup démocratisé depuis quelques années.

      La tendance générale est de plus en plus à développer les applications off-line sous Flash.

      samedi 14 novembre 2009

      Présentation de Flash et le principe de l'actionscript 3 AS3

      Historique du logiciel Flash et de l'ActionScript 3 AS3

      Flash CS3 est la 10ème version de flash. Le moteur de lecture de Flash CS3 est Adobbe Flash Player version 11.

      ActionScript est apparu en 1996 dans Flash 4. A l'époque il s'agit d'une liste d'instructions disponibles dans des menus déroulants. Il n'est pas encore possible de programmer.

      Il faut attendre Flash 5 en 2000 et le lancement officiel de ActionScript 1. Cette fois les développeurs ont accès à la programmation en AS. AS1 était cependant limité en vitesse et en puissance.

      En 2004 Flash MX 2004, ou Flash 7 introduit ActionScript 2.0, qui permettait la création de programmes orientés objet.

      ActionScript 3.0 apparaît en 2006. C'est une version très différente, clairement orientée objet, qui améliore considérablement la cohérence et l'efficacité de ce langage.

      Le « plug in » Flash 9 contient 2 interpréteurs de code, l'un consacré aux versions antérieures du code, l'autre beaucoup plus rapide qui interprète le code AS3.

      Adobe Flash Player a été refusé par Apple Ios sur les iPhone et les tablettes iPad. Adobe Flash player n'est plus utilisé par Google Android à compter de la version 4.1. Est-ce la fin du logiciel flash?
      Adobe propose de compiler l'actionscript en Html 5 dans la dernière version pour conjurer cette menace


      PRINCIPES ET NOUVEAUTÉS de Flash actionscript 3 AS3

      Nous allons travailler le plus rigoureusement possible dans la nouvelle logique de Flash. Pour cela il nous faudra respecter un certain nombre de principes nouveaux :
      • tout élément est un objet. Les objets peuvent dialoguer entre eux,
      • AS3 est un langage objet évolué. Pour exploiter au maximum sa puissance (et sa rapidité) il est essentiel de ne plus placer du code ActionScript à l'intérieur d'un fichier « .fla » (une animation), mais d'externaliser ce code dans des fichiers de code dédiés « .as »,
      • pour appliquer ce principe, les objets seront définis dans des classes AS. Il faudra ainsi importer systématiquement dans le fichier de code les classes prédéfinies nécessaires au fonctionnement de l'animation,
      •  l'animation et le fichier de code sont très faciles à lier,
      • il est impératif de commenter vos codes en AS3.

      PRINCIPE GÉNÉRAL DE LA PROGRAMMATION ORIENTÉE OBJET de Flash actionscript 3 AS3

      La programmation orientée objet propose une nouvelle façon de concevoir et de développer des applications, de manière à améliorer :
      • la structuration du code : afin de mieux pouvoir le comprendre,
      • la réutilisation du code : afin de réduire les coûts de développement,
      • la robustesse du code : afin de réduire les bugs et d'améliorer les performances de l'application.
      Programmer de manière objet consiste à abstraire les personnes et objets du monde qui nous entoure, de manière à pouvoir les recréer sous forme d'objets dans la mémoire d'un ordinateur. Chaque objet possède des données propres et des données partagées avec d'autres objets de même nature, il offre des services aux autres objets.

      La POO, notamment celle d'AS3, est basée sur la définition de classes puis de l'utilisation de propriétés et de méthodes de ces classes.


      UNE CLASSE EST UNE REPRÉSENTATION ABSTRAITE D'UN OBJET

      Une classe est assimilée à : un moule, un modèle ou encore un patron (en couture). Une classe est un type de données qui permet de créer des objets. Une classe est toujours définie dans un fichier avec l'extension .as.


      PRINCIPES DE LA HIÉRARCHIE D'AFFICHAGE EN en Flash actionscript 3 AS3

      • la scène est le conteneur de base des objets à afficher. Chaque animation contient un objet « Stage » contenant tous les objets visibles à l'écran,
      • tout ce qui apparaît à l'écran appartient à la famille des objets d'affichage (DisplayObject)
      • La classe mère « DisplayObject » contient de nombreuses sous-classes spécialisées. Même si la classe mère peut fonctionner pour toutes les sous-classes, en fonction des besoins il est préférable de choisir la sous-classe de DisplayObject la plus adaptée à l'objet à créer.

      QUELQUES EXEMPLES FONCTIONNALITÉS de Flash actionscript 3 AS3:

      • Stage : en référence à la scène principale.
      • Bitmap : affichage des images bitmap.
      • TextField : affichage d'un champ texte.
      • Video : affichage de la vidéo.
      • Shape : pour disposer d'une toile vierge ou créer des formes vectorielles (très performant pour cet usage, mais ne peut pas contenir d'autres objets d'affichage).
      • SimpleButton, MorphShape, StaticText ... : pour créer des éléments spécifiques de l'environnement auteur Flash.
      • Loader : pour créer un conteneur pour charger un élément externe (swf ou média)
      • Les sous-classes de DiplayObjectContener : Sprite et MovieClip si cet objet est destiné à contenir d'autres objets d'affichage. Un objet Sprite contiendra seulement une image de scénario, il ne pourra pas contenir d'animation. Un objet sprite est uniquement pilotable par AS. Un objet MovieClip peut contenir une animation créée dans Flash.

      mercredi 11 novembre 2009

      Script package actionscript AS3 couplage fichier .fla et .as

      Programme d'affichage d'un message en script ActionScript AS3 , couplage d'un fichier FLA et d'un fichier AS

      En actionscript AS3 on externalise le code dans un ou plusieurs fichiers de code externes. Il y aura donc une animation d'extension « .fla » associée à un fichier d'extension « .as » qui définira les fonctions que cette animation pourra exécuter. Pour simplifier le repérage nous nommerons toujours le fichier code du même nom que l'animation.

      Créez un nouveau fichier Flash, en sélectionnant « fichier ActionScript ». Dans ce cas le document ouvert est particulier, il s'agit d'une vaste zone d'édition de script AS3. Enregistrez ce fichier sous « message_bonjour.as ».
      Créez ensuite une animation flash AS3, nommée également « message_bonjour.fla ».
      Cliquez dans l'animation puis ouvrez complètement le panneau de propriétés en-dessous de la scène, afin de voir apparaître la case « classe du document ». Dans cette case tapez « message_bonjour ». Ceci permet de lier les 2 fichiers (animation et code). ATTENTION : ne pas ajouter l'extension du fichier après son nom.

      On procédera toujours de cette façon

      Vous avez 2 onglets qui permettent de passer du fichier FLA au fichier AS.

      Retournez dans le fichier de code.

      Il faut dans un premier temps importer les classes ActionScript 3 intégrées que nous allons utiliser dans le programme. Ceci se fait dans le cadre d'un bloc de code nommé « package »:
      package {
      // classe d'affichage de tous les objets sur la scène
      import flash.display.*;
      // classe générale des champs texte
      import flash.text.*;

      Nous allons ensuite définir une classe publique. Ce type de classe peut être associée à une animation. Dans ce cas la classe publique doit porter le même nom que l'animation Flash qui y sera associée.

      public class message_bonjour extends MovieClip {
      Ici nous nommons l'animation, le fichier de code, la classe et la fonction constructeur « message_bonjour ». L'expression "extends MovieClip" permet de lier cette classe à un clip, ce qui signifie que la classe constructeur que nous créons sera basée sur la classe AS3 « MovieClip ».

      La classe contient une unique fonction constructeur nommée « message_bonjour ». Cette fonction est dite « constructeur » car elle porte le même nom que la classe, ainsi elle est exécutée dès que la classe est initialisée (soit au lancement de l'animation liée).

      public function message_bonjour() {

      ATTENTION :
      AS3 est sensible à la casse majuscule/minuscule :
      « message_bonjour » et « message_Bonjour » sont différents.

      Les commandes exécutées dans la fonction constructeur:

      var monText:TextField = new TextField();
      monText.text = "Bonjour !";
      addChild(monText);
      }
      }
      }

      La première ligne créé une occurrence d'un objet champ texte (TextField) nommée « monText » (il s'agit d'un conteneur pour du texte) :
      var monText:TextField = new TextField();

      La structure de déclaration de variable est toujours la même soit :
      var nomVariable:TypeVariable = new TypeVariable ();

      ou bien                var nomVariable:TypeVariable = contenuVariable;

      Remarque :
      contrairement aux versions précédentes de AS, les variables sont typées en AS3. Cela veut dire qu'il faut définir le type de donnée qui sera stockée dans la variable. Il est encore possible de ne pas les typer, mais c'est peu recommandé (ex : var maVariable; déclare la variable « maVariable » sans en définir le type. Elle est considérée comme de type polyvalent « object »).

      Les types de données en actionscript AS3 : 
      • String : chaîne de caractères
      • Boolean : valeur booléenne (true ou false)
      • uint : nombre entier positif
      • int : nombre entier positif ou négatif
      • Number : nombre entier ou décimal, positif et négatif
      Une constante est une variable particulière, qui contient une valeur constante :
      const nbrPart:int = 5;

      La seconde ligne définit le contenu de « myText » (place la chaîne « Bonjour ! » dans le champ « monText »).
      monText.text = "Bonjour !";

      La troisième ligne permet l'affichage du champ sur la scène en ajoutant « monText » à l'objet d'affichage de la scène:
      addChild(monText);

      En AS3 le fait de créer un champ texte (ou un objet graphique quelconque, un bouton, ou encore un objet plus complexe comme un menu déroulant) ne suffit pas à l'afficher. Il faut ensuite ajouter l'objet texte créé à la liste d'affichage.

      Ce principe qui peut sembler un peu contraignant au départ est en fait très utile car il permet de créer des objets sans les placer nécessairement sur la scène immédiatement.

      Paramètres des champs texte
      Pour déterminer la position du champ sur la scène on peut définir ses coordonnées x et y :
      monText.x = 100;
      monText.y = 100;

      Pour ajouter une bordure au champ texte :
      monText.border = true;

      Pour régler la largeur et la hauteur du champ :
      monText.width = 200;
      monText.height = 30;

      Pour définir un format de texte
      var monFormat:TextFormat = new TextFormat ();
      monFormat.font = "Arial";
      monFormat.size = 24;
      monFormat.bold = true;
      monFormat.color = 0xFF0000;

      Tout cela peut également s'écrire sur une seule ligne, en passant les réglages en paramètres (mais c'est moins lisible) :
      var monFormat:TextFormat = new TextFormat (« Arial »,24, 0xFF0000, true);

      Color : nombre contenant trois composants RVB 8 bits ; par exemple, 0xFF0000 correspond au rouge et 0x00FF00 au vert, 0x000000 au noir.

      Pour obtenir le codage d'une couleur particulière : récupérez le code hexadécimal dans la palette de couleur de l'interface Flash, puis remplacez le signe # en tête par « 0x » (zéro x).

      Il faut ensuite appliquer ce format au champ texte, et cela avant d'avoir défini le contenu du champ texte :

      Application du format au champ « monText » :
      monText.defaultTextFormat = monFormat;

      CODE COMPLET script actionscript AS3

      package {
      import flash.display.*;
      import flash.text.*;

      public class message_bonjour extends MovieClip {
      public function message_bonjour() {
      var monText:TextField = new TextField();
      var monFormat:TextFormat = new TextFormat();
      monFormat.font = "Arial";
      monFormat.size = 24;
      monFormat.bold = true;
      monFormat.color = 0xFF0000;
      monText.defaultTextFormat = monFormat;
      monText.text = "Bonjour !";
      monText.x = 100;
      monText.y = 100;
      monText.border = true;
      monText.width = 200;
      monText.height = 30;


      addChild(monText);
      }
      }
      }

      mardi 10 novembre 2009

      Flash Code Actionscript graphics dessiner formes AS3

      Code Flash ActionScript AS3 pour dessiner dynamiquement des formes : ligne droite, cercle, rond, , triangle, carré, rectangle

      Créez une nouvelle animation AS3 nommée « formes.fla ». Nous allons y dessiner différentes formes vectorielles uniquement en code AS3.

      Associez-lui la classe de document « formes ».

      Créez le fichier de code actionscript AS3 « formes.as ».

      Dans ce fichier importez les classes « Sprite » et « Shape » :


      package {
      import flash.display.Sprite;
      import flash.display.Shape;

      Créez la classe publique « formes » liée à la classe « Sprite » :
      public class formes extends Sprite {

      Puis la fonction constructeur publique « formes » :
      public function formes():void {

      Le fichier est prêt à recevoir le code pour tracer dynamiquement les différentes formes vectorielles.

      RAPPEL SUR LE CODAGE DES COULEURS ACTIONSCRIPT EN AS3
      Pour obtenir le codage d'une couleur particulière : récupérez le code hexadécimal
      dans la palette de couleur de l'interface Flash,
      puis remplacez le signe # en tête par « 0x » (zéro x).

      Code Flash Actionscript AS3 POUR TRACER UNE LIGNE DROITE

      On va créerune nouvelle occurrence de l'objet Shape, nommée « ligneD »
      var ligneD:Shape = new Shape ();

      On définit l'épaisseur et la couleur de la ligne :
      ligneD.graphics.lineStyle(2, 0x000000);

      On précise les coordonnées du premier point de la ligne :
      ligneD.graphics.moveTo(450, 50);

      Celles du second point :
      ligneD.graphics.lineTo(400, 300);

      On ajoute l'occurrence à la liste d'affichage :
      addChild(ligneD);

      Code Flash Actionscript AS3 pour TRACER UN RECTANGLE

      On créé une nouvelle occurrence d'objet Shape nommée « rectangle » :
      var rectangle:Shape = new Shape();

      On définit la couleur de remplissage du rectangle :
      rectangle.graphics.beginFill(0x0000FF);

      On trace le rectangle en précisant dans les arguments : les coordonnées du point supérieur gauche puis la largeur et la hauteur du rectangle :
      rectangle.graphics.drawRect(300,100,100,50);

      On ajoute l'occurrence à la liste d'affichage :
      addChild(rectangle);


      Code Flash Actionscript AS3 POUR TRACER UN RECTANGLE AVEC CONTOUR ET COINS ARRONDIS

      On créé une nouvelle occurrence d'objet Shape nommée « rectRond » :
      var rectRond:Shape = new Shape();

      On définit l'épaisseur et la couleur du contour :
      rectRond.graphics.lineStyle(4, 0x0000FF);

      On définit la couleur de remplissage du rectangle :
      rectRond.graphics.beginFill(0xFF3F8E);

      Définition des paramètres du rectangle avec « drawRoundRect » : coordonnées du coin supérieur gauche, largeur, hauteur puis largeur et hauteur des bords arrondis :
      rectRond.graphics.drawRoundRect (40,250,80,120,25,25);

      On ajoute l'occurrence à la liste d'affichage :
      addChild(rectRond);


      Code Flash Actionscript AS3 POUR TRACER UN TRIANGLE ROUGE 

      Pour tracer un triangle rouge, on créé une nouvelle occurrence d'objet Shape nommée « triangle » :
      var triangle:Shape = new Shape();
      triangle.graphics.beginFill(0xFF0000);

      coordonnées du point de démarrage :
      triangle.graphics.moveTo(50, 50);

      coordonnées du point 2 :
      triangle.graphics.lineTo(50, 150);

      coordonnées du point 3 :
      triangle.graphics.lineTo(150, 50);

      coordonnées du point de départ pour le rejoindre :
      triangle.graphics.lineTo(50, 50);
      addChild(triangle);


      Code Flash Actionscript AS3 POUR TRACER UN CERCLE JAUNE

      On créé une nouvelle occurrence d'objet Shape nommée « cercle » :
      var cercle:Shape = new Shape();
      cercle.graphics.beginFill(0xE4CF12);

      On détermine avec « drawCircle » les coordonnées du centre, puis le rayon du cercle :
      cercle.graphics.drawCircle (200,150,60);
      addChild(cercle);


      Code Flash Actionscript AS3 pour tracer une ellipse vert clair avec contour vert foncé

      On créé une nouvelle occurrence de Shape nommée « ellipse » :
      var ellipse:Shape = new Shape();

      On définit l'épaisseur et la couleur du contour :
      ellipse.graphics.lineStyle(2, 0x10701A);

      On définit la couleur du remplissage :
      ellipse.graphics.beginFill(0x1FD831);

      On définit avec « drawEllipse » les coordonnées du coin supérieur gauche du rectangle qui contient l'ellipse, puis la largeur et la hauteur de cette ellipse:
      ellipse.graphics.drawEllipse (200, 300, 150, 60);
      addChild(ellipse);


      Code Flash Actionscript AS3 POUR TRACER UNE LIGNE COURBE VERTE

      On créé une nouvelle occurrence de Shape nommée « ligneC » :
      var ligneC:Shape = new Shape ();

      On définit l'épaisseur et la couleur de la ligne :
      ligneC.graphics.lineStyle(2, 0x00FF00);

      On définit les coordonnées du point de départ :
                            ligneC.gr
                            ligneC.graphics.moveTo(200, 50);

      On définit les paramètres de la ligne courbe avec « curveTo » :
      ligneC.graphics.curveTo(250,-20, 300,50);
      addChild(ligneC);

      curveTo :
      Les paramètres de la ligne « moveTo » définissent tout d'abord les coordonnées du point de départ.
      ligneC.graphics.moveTo(200, 50);

      Les deux derniers paramètres de la commande « curveTo » sont les coordonnées du point d'arrivée. Les deux premiers ont les coordonnées du point de courbure du second point de la courbe. Il s'agit des coordonnées de l'extrémité du vecteur qui définit la courbure de l'arc.
      ligneC.graphics.curveTo(250,-20, 300,50);

      Sur le même principe on va tracer une lune mauve avec un contour violet:
      var lune:Shape = new Shape();
      lune.graphics.lineStyle(3,0x502E74);
      lune.graphics.beginFill(0x8B5ABE);

      // point de départ de coordonnées 400, 200
      lune.graphics.moveTo(400, 200);
      // point d'arrivée de coordonnées 400, 300
      lune.graphics.curveTo(300, 250, 400, 300);
      // retour au point 400, 200, avec un autre point de contrôle qui permet de tracer une seconde courbe

      lune.graphics.curveTo(350, 250, 400, 200);
      addChild(lune);

      Code Flash Actionscript AS3 complet pour dessiner des formes

      package {
      import flash.display.Sprite;
      import flash.display.Shape;
      public class formes extends Sprite {
      public function formes():void {

      // tracé d'une ligne droite noire
      var ligneD:Shape = new Shape ();
      // épaisseur et couleur
      ligneD.graphics.lineStyle(2, 0x000000);
      // point 1
      ligneD.graphics.moveTo(450, 50);
      // point 2
      ligneD.graphics.lineTo(400, 300);
      addChild(ligneD);
      // tracé d'un rectangle bleu
      var rectangle:Shape = new Shape();
      rectangle.graphics.beginFill(0x0000FF);

      // position coin supérieur gauche, puis largeur et hauteur
      rectangle.graphics.drawRect(300,100,100,50);
      addChild(rectangle);
      // tracé d'un rectangle à bords arrondis avec contour
      var rectRond:Shape = new Shape();
      rectRond.graphics.lineStyle(4, 0x0000FF);
      rectRond.graphics.beginFill(0xFF3F8E);
      rectRond.graphics.drawRoundRect (40,250,80,120,25,25);
      addChild(rectRond);
      // tracé d'un triangle rouge
      var triangle:Shape = new Shape();
      triangle.graphics.beginFill(0xFF0000);

      // point de démarrage
      triangle.graphics.moveTo(50, 50);
      // point 2
      triangle.graphics.lineTo(50, 150);
      // point 3
      triangle.graphics.lineTo(150, 50);
      // point de départ
      triangle.graphics.lineTo(50, 50);
      addChild(triangle);
      // tracé d'un cercle jaune
      var cercle:Shape = new Shape();
      cercle.graphics.beginFill(0xE4CF12);

      // centre, rayon)
      cercle.graphics.drawCircle (200,150,60);
      addChild(cercle);

      // tracé d'une ellipse verte
      var ellipse:Shape = new Shape();
      // trait vert foncé
      ellipse.graphics.lineStyle(2, 0x10701A);
      // remplissage vert clair
      ellipse.graphics.beginFill(0x1FD831);
      // point supérieur gauche, largeur, hauteur
      ellipse.graphics.drawEllipse (200, 300, 150, 60);
      addChild(ellipse);

      // tracé d'une ligne courbe verte
      var ligneC:Shape = new Shape ();
      ligneC.graphics.lineStyle(4, 0x00FF00);
      ligneC.graphics.moveTo(200, 50);
      ligneC.graphics.curveTo(250, -20, 300,50);
      addChild(ligneC);
      // tracé d'une lune
      var lune:Shape = new Shape();
      lune.graphics.lineStyle(3,0x502E74);
      lune.graphics.beginFill(0x8B5ABE);

      // départ au point 400, 200
      lune.graphics.moveTo(400, 200);
      // point d'arrivée de coordonnées 400, 300
      lune.graphics.curveTo(300, 250, 400, 300);
      // retour au point 400, 200
      lune.graphics.curveTo(350, 250, 400, 200);
      graphics.endFill();

      }
      }
      }

      lundi 9 novembre 2009

      Flash actionscript addChild index affichage AS3

      MODIFICATION DES INDEX d'affichage ActionScript Flash AS3


      Avant d'être ajouté à la liste d'affichage, un objet est considéré comme « objet d'affichage hors liste ».

      Pour l'afficher on utilise les méthodes addChild ou addChildAt (qui permet de préciser son index d'affichage).

      Donc en AS3 on peut créer un objet sans l'afficher immédiatement, ce qui permet d'optimiser le projet en gérant le préchargement, en différant l'affichage d'objets ...

      Chaque animation AS3 contient une seule liste d'affichage. Les objets affichés sont contenus dans des DisplayObject (MovieClip ou Sprite, Shape...).

      Certains de ces objets, les DisplayObjectContainer (MovieClip et Sprite) peuvent contenir plusieurs objets d'affichage, et donc une liste interne d'affichage : une liste d'objets enfants, sous forme d'un tableau interne.

      L'index 0 de la liste d'affichage est le plus profond (la couche inférieure).

      Le premier objet ajouté à la liste avec « addChild » prend l'index 0, le suivant l'index 1 etc... Pour gérer l'ordre d'empilement on utilise la méthode:
      addChildAt (monObjet, index)  ou index est un entier positif.

      Mais attention, si l'on utilise cette méthode il faut que l'index existe déjà, qu'il soit déjà occupé par un DisplayObject, sinon on obtiendra une erreur (le panneau de sortie indiquera: « L'index indiqué sort des limites. »). De plus aucune profondeur ne peut rester vide au sein de la liste d'affichage.

      La liste d'affichage fonctionne comme une pile d'assiettes : si on enlève une assiette de la pile toutes les assiettes situées au-dessus descendent d'un niveau. C'est l'effet « effondrement des profondeurs ».

      DÉPLACEMENT D'UN OBJET AFFICHAGE LISTE actionscript Flash AS3

      Exemple d'une liste de 8 objets, nous souhaitons déplacer l'objet d'index 1 à l'index 6.

      Si nous ne connaissons pas le nom des objets nous pouvons écrire :
      setChildIndex (getChildAt(1), 6);

      Une fois l'objet d'index 1 enlevé la pile s'effondre, ensuite l'assiette est replacée à l'index 6, l'objet qui y était remonte à l'index 7.

      Nous souhaitons déplacer l'objet d'index 5 à l'index 0 :
      setChildIndex (getChildAt(5, 0);

      Lorsqu'un objet est descendu les objets intermédiaires remontent dans la liste. La méthode
      getChildIndex (monObjet)  permet de récupérer l'index d'un objet.

      La méthode: setChildIndex (monObjet, index) permet de placer monObjet à un index précis de la liste d'affichage

      Chaque objet est créé dans un objet conteneur différent, donc chaque objet conteneur contient un seul élément situé à index 0 de sa liste d'affichage interne. Chaque objet conteneur est placé à un index différent de la liste d'affichage générale.

      On peut connaître le nombre d'objets contenus dans la liste d'affichage grâce à la propriété:
      numChildren

      Tracez le nombre d'objets d'affichages dans le projet « perso_01 », puis dans « formes ».

      Si vous créez plusieurs formes vectorielles dans l'interface de Flash, même si vous les placez sur des claques différents, toutes vos formes vectorielles sont automatiquement placées dans le même objet conteneur situé sur un seul index de la liste d'affichage générale. Donc les différentes formes ont des numéros d'index différents au sein de la liste interne de l'objet conteneur « Shape ».

      Dans une animation flash, tracez plusieurs formes vectorielles puis tracez le nombre d'objets de la liste d'affichage.
      Pour connaître l'index d'un objet dans un conteneur :
      monConteneur.getChildIndex(monObjet);

      ÉCHANGE DE PROFONDEUR actionscript Flash AS3

      La méthode: swapChildren(monObjet1, monObjet2); permet d'échanger les profondeurs entre 2 objets, sans bouger les autres éléments.

      La méthode : getChildAt (index) renvoie le nom de l'occurrence associée à l'index spécifié.

      Donc on peut aussi échanger les index de 2 occurrences par leurs seuls numéros d'index:
      swapChildren (getChildAt(1), getChildAt(4))

      PLACER OBJET AU-DESSUS DE TOUS LES AUTRES en code actionscript Flash AS3

      addChildAt (monObjet, numChildren);

      SUPPRESSION OBJET LISTE AFFICHAGE en code actionscript Flash AS3

      La méthode removeChild (monObjet) ou removeChild (getChildAt(index)) permet de supprimer un objet de la liste d'affichage SANS LE DÉTRUIRE, l'objet redevient simplement « hors liste d'affichage ».

      Nous verrons plus tard que pour supprimer un displayObject il faut passer ses références à null.

      NOMMER DYNAMIQUEMENT OCCURRENCE en code actionscript Flash AS3

      Vous pouvez attribuer un nom d'occurrence à une occurrence créée dynamiquement :
      var monClip:MovieClip = new MovieClip ();

      monClip.name = « monOccurrence »;
      addChild (monClip);

      trace (monClip.name);
      renvoie : monOccurrence

      REMARQUE
      • Par défaut un nom d'occurrence générique est affecté : instance1, instance2...
      • Il est impossible de modifier la propriété « name » d'une occurrence nommée dans l'environnement auteur.

      LISTE PRINCIPALE ET LISTES AFFICHAGES CONTENEURS en code actionscript Flash AS3


      Dans un projet « pile », nous allons créer dynamiquement 2 formes vectorielles, un rond et un carré, de couleurs différentes, superposées (leurs centres coïncident), à 80% de valeur d'alpha. Mais ces 2 formes seront elles-mêmes placées dans un même sprite.

      Créer « pile.fla » et « pile.as ». Lier les 2.

      Dans « pile.as », importez les classes Sprite et Shape.

      package {
      import flash.display.Sprite;
      import flash.display.Shape;

      Créez la classe publique et la fonction constructeur :
      public class pile extends Sprite {
      public function pile():void {

      Créez ensuite une occurrence de sprite « cont1 » qui servira de conteneur aux deux formes vectorielles :
      var cont1:Sprite = new Sprite();

      Créez vos deux formes vectorielles dans deux nouvelles « shapes » :
      // tracé d'un carré bleu
      var carre:Shape = new Shape();
      carre.graphics.beginFill(0x0000FF,.8);
      carre.graphics.drawRect(170,170,60,60);
      // tracé d'un rond bleu plus clair
      var rond:Shape = new Shape ();
      rond.graphics.beginFill(0x7268CA, .8);
      rond.graphics.drawCircle(200,200,50);

      Placez les 2 formes à l'intérieur du conteneur, en précisant leur index :
      // placement du rond à l'index 0 du conteneur
      cont1.addChildAt(rond,0);
      // placement du carré à l'index 1 du conteneur
      cont1.addChildAt(carre, 1);

      Ajoutez le conteneur à la liste d'affichage principale:
      addChild (cont1);
      }
      }
      }

      Testez: vous devez afficher votre cercle en fond, et le carré par dessus.

      CODE COMPLET actionscript addChild Flash AS3

      package {
      import flash.display.Sprite;
      import flash.display.Shape;
      public class pile extends Sprite {
      public function pile():void {
      var cont1:Sprite = new Sprite();
      var carre:Shape = new Shape();
      carre.graphics.beginFill(0x0000FF,.8);
      carre.graphics.drawRect(0,0,60,60);
      var rond:Shape = new Shape ();
      rond.graphics.beginFill(0x7268CA, .8);
      rond.graphics.drawCircle(-30,-30,50);
      // placement du rond à l'index 0 du conteneur
      cont1.addChildAt(rond,0);
      // placement du carré à l'index 1 du conteneur
      cont1.addChildAt(carre, 1);
      //placement du conteneur sur la scène
      cont1.x = 100;
      cont1.y = 100;
      cont1.swapChildren (rond, carre);
      // affichage du conteneur
      addChild (cont1);
      // affiche le nombre d'enfants de la liste principale
      trace (numChildren);
      // affiche le nombre d'enfants de la liste interne du sprite cont1
      trace (cont1.numChildren);
      }
      }
      }