Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Stage et compilation

Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Compatible Flex Builder 2. Cliquer pour en savoir plus sur les compatibilités.Compatible Flex 2. Cliquer pour en savoir plus sur les compatibilités.Par ekameleon (Marc Alcaraz), le 02 août 2006

Au lancement de la compilation d'une nouvelle animation dans Flex2, il est intéressant de pouvoir définir la couleur du fond, la fréquence de l'animation, etc.. Il existe plusieurs méthodes pour définir ces propriétés par défaut lors du lancement de la compilation. Je vais essayer de vous donner les principaux éléments qui vous permettrons à mon avis d'y voir plus clair à ce sujet.

Il existe maintenant au moins 2 manières distincts pour créer un swf, soit en utilisant tout simplement du code AS3 soit en se basant sur un fichier .mxml contenant un document MXML qui servira de support à l'animation compilée.

Voyons maintenant comment définir clairement certaines propriétés propres à l'animation et à sa scène principale. Au niveau du compilateur directement

Au niveau du compilateur directement

Il est possible de régler la configuration de base d'un swf au niveau du compilateur AS3 qui est basé sur des lignes de commandes. Vous pouvez d'ailleurs lire un excellent article (en anglais) sur le blog de Senocular qui vous indiquera tout ce qu'il faut savoir sur le compilateur mxmlc.exe de Flex2 : Beginners Guide to Getting Started with AS3 (Without Learning Flex). Il est donc possible en utilisant uniquement le compilateur AS3 de créer des swf sans utiliser Flex2 d'ailleurs. Je pense que vous le savez déjà mais le compilateur de Flex est gratuit et donc qu'il est possible de l'utiliser dans un contexte différent de celui de Flash ou de Flex2.

Au niveau des paramètres du compilateur mxmlc.exe nous allons nous concentrer tout particulièrement sur les propriétés :

  • -default-background-color : permet de définir la couleur de l'animation par défaut.
  • -default-script-limits : permet de régler le nombre de récursions maximales et le délais limite des boucles dans le swf.
  • -default-frame-rate : permet de définir la fréquence de l'animation en frame par secondes.
  • -default-size : permet de définir la largeur et la hauteur par défaut du swf.

Avec ces 4 commandes il est possible de gérer aisément l'affichage de base de votre application.

Exemple de ligne de commande à ajouter dans la section ActionScript Compiler du panneau des propriétés de votre projet.

-default-background-color 0x7f7f8e -default-script-limits 5000 10 -default-frame-rate=24 -default-size 740 400

Remarque : pour le moment je n'ai pas réussi à faire fonctionner correctement le paramètre -default-size ? A chaque fois que j'utilise uniquement ce paramètre en ligne de commande dans les propriétés de mon projet Flex2 j'ai toujours un stage en 100% ? Si vous avez des idées sur le pourquoi de cet oubli du compilateur, je suis preneur :)

En utilisant du code AS3 seulement.

Si il faut à chaque fois passer par les paramètres du compilateur, cela peut devenir au final très fastidieux de gérer la compilation de plusieurs applications ayant à chaque fois des paramètres globaux différents. Aussi il est possible de paramétrer la couleur du fond, la fréquence de l'animation et la largeur et la hauteur de la scène directement dans le code… Pour cela il existe encore plusieurs possibilités.

1 - En utilisant une meta-balise [SWF] :

package
{
 
	import flash.display.Sprite ;
	import flash.display.StageScaleMode ;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize 
	import flash.text.TextFormat;
 
   	[SWF(width="740", height="400", backgroundColor="#B1D7EF", frameRate=48)]
 
	public class TestStage extends Sprite
	{
 
		// ----o Constructor
 
		public function TestStage()
		{
 
			stage.scaleMode = StageScaleMode.NO_SCALE ;
 
			trace(stage.stageWidth + " : " + stage.stageHeight) ;
 
			var tf:TextField = new TextField() ;
			tf.x = 25 ;
			tf.y = 25 ;
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.defaultTextFormat = new TextFormat("arial", 12) ;
			tf.text = "Hello World." ;
 
			addChild(tf) ;
 
		}
 
	}
 
}

Attention : Il semblerait que la position dans votre code de la balise soit importante ! Au début, j'essayais de mettre cette balise avant les import et il semblerait qu'elle ne fonctionne pas à cet endroit là !

Vous remarquerez dans vos tests qu'en supprimant les propriétés width et height, que l'animation prend la taille maximale disponible (100% en largeur et hauteur par défaut).

2 - En utilisant les propriétés de la classe Stage directement.

Il est possible également en manipulant les propriétés de la classe Stage de gérer certains paramètres de base comme la fréquence. En effet il existe en AS3 la propriété frameRate qui permet de changer à tout moment la fréquence de l'animation avec une valeur de type uint en frames par seconde.

stage.frameRate = 48 ;

En utilisant du MXML et le framework mx de Adobe.

Il faut alors absolument utiliser le framework mx de Adobe pour Flex2 et donc utiliser au moins la classe mx.core.Application et un fichier MXML de lancement pour l'application. Les possibilités deviennent alors plus nombreuses. (avec un poids du swf qui va forcément grossir également)

<mx:Application frameRate="48" width="740" height="400" backgroundColor="#B1D7EF" backgroundAlpha="25">
 
</mx>

En regardant de plus prêt la classe Application vous vous rendrez compte qu'il existe de nombreuses propriétés pour customiser au mieux votre animation comme la propriété backgroundGradientColors qui permet de définir un tableau de couleur pour créer dans le fond de l'animation un dégradé de couleur.

Il faut juste faire un choix plein l'utilisation des outils d'Adobe qui évitent de réinventer la roue mais qui grossissent de façon conséquente les .swf ou alors vous pouvez réaliser complètement votre application sans toucher au MXML et au code de Adobe (c'est ce que je préfère mais franchement pour un backoffice vite fait.. à mon avis le MXML et son framework MX va apporter une souplesse difficile à surpasser dans l'immédiat.

Par ALCARAZ Marc aka eKameleon (2006) - Vous pouvez consulter l'article original et des commentaires sur mon blog.