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);
}
}
}

Aucun commentaire: