Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Où placer son code? La classe document dans Flash CS3

Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Compatible Flash CS3. Cliquer pour en savoir plus sur les compatibilités.Par ITERATIF (Olivier Bugalotto)
  • Révision : lilive - 15/05/2010

Il existe plusieurs endroits où placer le code Actionscript d'une application réalisé dans Flash. Voici un petit tour d'horizon, qui présente une nouvelle possibilité introduite dans Flash CS3.


Avant Flash CS3

Mettre le code sur une image

Il est possible de placer du code directement sur une image. S'il est possible de répartir le code sur plusieurs images différentes, une bonne partie des codeurs expérimentés préfère centraliser tout le code au même endroit, sur la première image d'un calque créé spécialement à cet effet. Ce calque est appelé “action”, “code” ou encore “script”:

Ainsi la maintenance du code est facilitée: il est plus facile de s'y retrouver, surtout si on reprend le projet après l'avoir mis de côté quelques mois, ou si l'application a été réalisée par une autre personne.



Mettre le code dans une classe

Dans le cas des plus fous d'entre nous, on utilise une classe contenant une méthode statique qui sert de point d'entrée, souvent nommée main ou run :

class Application {
	public function Application() {
	}
 
	static public function main(mc:MovieClip):Void {
		// instancier la classe Application ici
	}
}

Ceci permet d'isoler le code dans un fichier de classe .as distinct du fichier .fla

L'autre avantage de procéder ainsi et qu'on peut alors utiliser n'importe quel éditeur de texte pour écrire le code, et beaucoup de monde à son éditeur préféré, plus pratique que l'éditeur intégré dans l'environnement de programmation de Flash.



Depuis Flash CS3: La classe du document

A partir de Flash CS3, il existe une autre manière de placer du code sur la scène, en utilisant la classe du document. Il suffit d'indiquer dans le panneau des propriétés de la scène une classe héritant de la classe MovieClip:

Capture d'écran Flash CS3 en anglais:
Flash CS3 en anglais

Capture d'écran Flash CS4 en français:
Flash CS4 en français

Voici le code de la classe Application :

package {
	import flash.display.MovieClip;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
 
	public class Application extends MovieClip {
		private const MAX_IMG:uint = 6;
		public var xPos:Number = 10;
		public var yPos:Number = 10;
		public var counter:Number = 1;
		public var columns:Number = 3;
		public var margin:Number = 10;
 
		public function Application() {
			for(var i:uint = 0; i < MAX_IMG; i++) {
				var calvin:BitmapData = new Calvin();
				var bitmap:Bitmap = new Bitmap(calvin);
 
                                bitmap.x = xPos;
				bitmap.y = yPos;
				xPos += bitmap.width + margin;
				if(counter % columns == 0) {
					yPos += bitmap.height + margin;
					xPos = margin;
				}
 
				addChild(bitmap);
				counter++;
                        }	
		}
	}
}

Le code contenu dans la fonction constructeur (public function Application) de la classe sera exécuté au lancement de l'application, comme s'il avait été placé sur la première image de la scène.

Une manière de prouver que la scène est une instance de la classe Application, il vous suffit de faire sur la scène :

trace(this is Application); // --> écrit "true"
// ou
trace(this); // --> écrit "[object Application]"

Nous avons ainsi separé le code de notre présentation …

Vous trouverez le code source de l'exemple ici : Application

Par ITERATIF - BUGALOTTO Olivier (2006) Vous pouvez retrouver ce tutorial et des commentaires à ce sujet sur mon blog

Pour en savoir plus