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.
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.
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.
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:
Capture d'écran 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 …
Par ITERATIF - BUGALOTTO Olivier (2006) Vous pouvez retrouver ce tutorial et des commentaires à ce sujet sur mon blog
Encore des questions? Besoin d'aide? Venez en discuter sur les forums Orienté Objet et Architecture ou Programmation Actionscript.