Easy-Micro

ESPACEMEMBRE ActionScript
Bibliothèques

Les bibliothèques de classe

Les bibliothèques Flash sont stockées dans l'API (Interface de Programmation) du lecteur Flash (et non pas dans Flash qui, lui, contient les objets "classique" comme Array, Date, String...).

En ActionScript 3 les différentes fonctionnalités du lecteur Flash sont stockées dans des paquetages spécifiques :
  • flash.accessibility : classes qui permettent de prendre en charge l'accessibilité du contenu.
  • flash.display : classes essentielles que Flash Player utilise pour créer des affichages visuels.
  • flash.errors : classes d'erreur couramment utilisées.
  • flash.events : modèle d'événements DOM et la classe de base EventDispatcher.
  • flash.external : contient la classe ExternalInterface pour communiquer avec le conteneur de Flash Player.
  • flash.filters : classes pour les effets de filtrage de bitmaps.
  • flash.geom : contient des classes géométriques, telles que les points, les rectangles et les matrices de transformation, pour prendre en charge la classe BitmapData.
  • flash.media : classes permettant de manipuler le multimédia (sons et des vidéos).
  • flash.net : envoyer et recevoir des données à partir du réseau (téléchargement d'URL).
  • flash.printing : classes permettant d'imprimer le contenu Flash.
  • flash.profiler : contient des fonctions qui permettent de déboguer et tester le code ActionScript.
  • flash.system : classes permettant d'accéder aux fonctionnalités de niveau système (sécurité...)
  • flash.text : classes permettant de manipuler des champs de texte.
  • flash.ui : classes d'interface utilisateur (classes permettant d'interagir avec la souris et le clavier).
  • flash.utils : classes d'utilitaires, telles que des structures de données comme ByteArray.
  • flash.xml : contient la prise en charge de l'ancien code de Flash Player et autres fonctionnalités propres à Flash Player.XMLXML

Flash est configuré afin d'importer automatiquement toutes les classes issues de l'API du lecteur Flash. Il n'est donc pas nécessaire d'importer manuellement les classes lorsque nous codons au sein de l'environnement auteur.

On peut saisir directement:
var monclip:MovieClip = new MovieClip();

Mais si nous plaçons notre code à l'exterieur de Flash, au sein de classes, nous devons explicitement importer les classes nécessaires :
import flash.display.MovieClip;
var monclip:MovieClip = new MovieClip();

ActionScript La classe Event
Il est important de noter que la classe Event est la classe parente de toutes les classes événementielles. Exemple: Event.ENTER_FRAME. La classe Event posséde des sous-classes comme flash.events.MouseEvent. Exemple: MouseEvent.CLICK

ActionScript Classes graphiques
Toutes les classes graphiques sont stockées dans trois différents paquetages: flash.display, flash.media et flash.text. Trois types d'objets graphique sont importants:

◊ les objets de type flash.display.DisplayObject : tout élément devant être affiché doit être de type DisplayObject. Attention: un objet héritant simplement de DisplayObject (comme Shape par exemple) n'a pas la capacité de contenir des objets graphiques. La classe Shape est la classe de base pour tout contenu vectoriel, elle est fortement liée à l'API de dessin grâce à sa propriété graphics.

◊ les objets de type flash.display.InteractiveObject : Cette classe définit les comportements liés à l'interactivité (comme la classe SimpleButton ou TextField).

◊ les objets de type flash.display.DisplayObjectContainer : ceux là peuvent contenir des objets graphiques.

ActionScript Importer une classe externe dans Flash
Exemple : importer la classe TweenMax proposées sur le site Greensock (bouton en haut à droite de l'écran) qui permet d'utiliser les techniques de easing : mouvement de rebond (back), mouvement élastique...

Cette classe est à télécharger dans un dossier "Mes documents" / "class_as"

Pour la relier dans Flash,
Menu Modifier / Préférences / ActionScript, bouton "Paramètres d'ActionScript 3.0" / chemin source
et on sélectionne le dossier "class_as"

Voici le code (un clip "mc" est sur la scéne)
import com.greensock.TweenMax;
import com.greensock.easing.*;

//TweenMax.to(clip,rapidité, {position d'arrivé,technique de easing});
TweenMax.to(mc,5,{x:400,y:38, alpha:.5,ease:Back.easeOut});

Voir les fichiers FLA d'exemple fournit dans le dossier téléchargé.

Autre exemple d'utilisation de la bibliothèque Flash TweenMax: : Un zoom sur une image
// Effet de zoom sur une image

import gs.TweenMax;
import gs.easing.Sine;

var monloader:Loader = new Loader();
var monurl:URLRequest = new URLRequest("image.jpg");
var taille:String = 1;
var mon_mc:MovieClip = new MovieClip();

monloader.load(monurl);
addChild(mon_mc);
mon_mc.addChild(monloader);

mon_mc.x = 100;
mon_mc.y = 100;

function deplace(e:MouseEvent):void { mon_mc.startDrag(false); }
mon_mc.addEventListener("mouseDown",deplace);

function stopdeplace(e:MouseEvent):void { mon_mc.stopDrag(false); }
stage.addEventListener("mouseDown",stopdeplace);

//monbouton est un bouton sur la scène
monbouton.addEventListener("mouseDown",zoomzy);

function zoomzy(evt:MouseEvent):void {
TweenMax.to(mon_mc,1,{scaleX:taille, scaleY:taille, ease:Sine.easeOut});
TweenMax.to(mon_mc,1,{x:(mon_mc.x - contour.x/2});
}

ActionScript La classe Tween
Depuis Flash CS4, la classe Tween, (qui fait partie intégrante du lecteur Flash depuis de nombreuse année), est exploitable en AS3. Elle est fournies dans le package fl.transitions.Tween (ex package mx.transitions.easing pour AS1 et AS2). La classe Tween permet de créer des interpolations sur n'importe quelle propriété numérique. Utilisation :
import fl.transitions.Tween;
import fl.transitions.easing.*;

// Tween(clip, propriété à modifier, technique de easing)
var monTween:Tween = new Tween(monclip, "x", Elastic.easeOut, 0, 300, 3, true);

ActionScript Classe du document
Flash permet d'utiliser une instance de sous classe graphique comme scénario principal (mais celle-ci doit hériter d'une classe graphique comme flash.display.Sprite ou flash.display.MovieClip).

Si nous utilisons comme classe du document une sous classe graphique nommé Application, Flash ajoute aussitôt une instance de celle-ci comme scénario principale.

Exemple : on cré un nouveau document Flash puis, à coté un répertoire nommé org dans lequel nous créons un répertoire document. Au sein du répertoire document nous définissons une classe Application (Application.as) dont voici le code :
package org.bytearray.document
{

import flash.display.MovieClip;

public class Application extends MovieClip
{
         public function Application()
         {

         trace(this); // Affiche [objet Application]

         }
}
}

Afin de lier cette classe du document à notre document Flash, nous utilisons le champ "Classe du document" du panneau "Inspecteur de propriétés". Dans le champ "Classe du document", saisisez : org.document.Application

Exemple d'import de classe externe
Attention, le nom du package (ici test) doit être identique au nom de répertoire dans lequel il se trouve (test donc :-). Voici le contenu du fichier "Disque.as" :
package test {

import flash.display.Shape;

public class Disque extends Shape {
private var color;
private var radius;

public function Disque(color:uint, radius:Number) {
this.graphics.beginFill(color);
this.graphics.drawCircle(0, 0, radius);
}
}
}

et dans une image clé du fichier Flash :
// import de la classe Disque
import test.Disque;

// création d'une instance de classe
addChild(new Disque(0x1234FF, 50));

ActionScript Automatiser l'accès aux classes
Si vous voulez spécifier un chemin d'accès de classes global à tous les projets au sein de Flash,
Menu Modifier / Préférences / ActionScript / bouton "Paramètres d'ActionScript 3.0".

En cliquant sur l'icône + on ajoute un champ afin de spécifier le chemin d'accès au répertoire contenant les classes globalses (par exemple: C:\mes_classes_AS3).

Note : deux autres lignes sont déjà présentes :
la première indique que le compilateur doit regarder à coté du document en cours. Puis la deuxième ligne indique le chemin d'accès aux classes natives de Flash.

< Page précédente ACTIONSCRIPT Page suivante >