Ce que je vais présenter ici n'est qu'un rappel de choses à savoir sur Flash. Dans un premier temps, je vais surtout regrouper ces choses sous forme de liste sans entrer dans les détails. Peut-être par la suite... Si cette page prend de l'ampleur, il se pourrait même que je fasse quelque chose dans la même idée que Opquast, mais pour Flash - par ailleur, certaines de bonnes pratiques de Opquast sont aussi valables pour et dans Flash.
Code
Il faut toujours écrire le code AS sur la timeline d'une animation Flash; fini, donc, les onClipEvent et scripts placés sur des occurences de clips. [débutant]
Si dans vos projets les fichiers externes ne se chargent pas (fichiers texte ou xml ou autre encore), vérifiez que les noms de dossiers ne comportent aucun caractère spécial (é, è, ï...). [débutant]
Optimisation
L'accès sur les tableaux est lent : il vaut mieux passer par des objets, spécialement si aucun ordre de rangement est demandé. [avancé]
Entre les méthodes shift et pop de la classe Array, pop est plus rapide: elle ne renvoie que la dernière entrée enlevé d'un tableau; la méthode shift, elle, renvoie la première entrée et doit traiter le tableau en entier pour décaler chaque entrée de -1 . [avancé]
Les propriétées créés à l'aide de la fonction addProperty sont lentes. A réserver si le setter n'est pas une grosse fonction, sinon il vaut mieux passer par une seule fonction, spécialement si le getter n'est pas utilisé. [avancé]
Pour optimiser un code actionscript, il est possible de virer les propriétées statiques et invariables directement sur les graphismes eux-mêmes; cela augmente d'autant plus la rapidité des scripts. [intermédiaire]
Les ressources de Flash ne sont pas infinies; les animations de plusieurs et gros clips sur la scène, une utilisation trop poussée de boucles for, setInterval, onEnterFrame sont autant de paramètres qui peuvent occuper les ressources du processeur et faire ramer une animations Flash. [intermédiaire]
Les vitesses d'accès sur les variables peuvent variées suivant l'endroit où sont stockées ces dernières. Flash travaillant par récursion du local vers le global, utiliser le mot var pour localiser une variable plus éloignée dans une chaine de traitement permet de diminuer les temps de calculs. [intermédiaire]
Les ressources requis par un swf donné peut varier d'un cas à l'autre. Par exemple, il sera généralement plus rapide lu dans un player plus récent que la version dans laquelle il a été compilé (surtout observable avec les players 7 et 8). Cela varie aussi avec le choix du navigateur : le plugin pour Firefox, Opéra et Netscape est plutôt gourmand par rapport à l'activeX d'Internet Explorer. L'executable SAPlayer ou les versions projecteurs des swf sont ceux qui demandent le moins de ressources. [tout niveau]
Il est possible de cacher des calques à la compilation en les paramétrant en tant que calque guide. Tout ce qui se trouve sur ces calques ne sont pas pris en compte, aussi bien pour les graphismes que pour des morceaux de code que l'on ne voudrait pas effacer, ni voir executer. [intermédiaire]
Ergonomie
L'utilisation du Stage sur toute la surface d'une fenêtre de navigateur est plus orienté pour les projets Flash qui ne nécessite pas beaucoup de ressources, comme des sites corporatifs ou des interfaces/plateformes de formations.
Pour des projets tel que des jeux, il est préférable de définir une taille fixe du Stage pour s'assurer une économie sur les ressources. [intermédiaire]
Documenter un code source permet de pouvoir rentrer plus facilement dans la logique d'une source, autant pour celui qui l'a coder que pour les autres programmeurs qui pourraient avoir à travailler dessus. [tout niveau]
Sauf spécification contraire, il est préférable de faire une page d'index en html qui indique que le projet est en Flash et permette le téléchargement du plugin. [débutant]
Dans le cas contraire, il est possible de proposé un script qui vérifie la présence du plugin; il faut vérifier néanmoins si le poste client peut éxécuter le script. [intermédiaire]
Toutes polices bitmap ou pixelisé - comme celles fournies sur Fonts for Flash - doivent être utilisées à une taille spécifiée par le concepteur - souvent 8px - et à des coordonnées pleines, si possible, même quand elles sont en mouvement. L'utilisation du Math.round et un affichage de 100% sur la suite des clips imbriqués permet d'éviter le floutage généré sur les boites de texte dans Flash. [tout niveau]
L'implémentation d'un son sur la timeline de Flash permet de forcer une animation à rester à son framerate, ce qui peut l'empècher de saccader. [tout niveau]
La cadence, ou le nombre d'images-cléf par seconde, est décidé par le fichier swf qui est indiqué dans le code de la page html. Tous swf chargés dans un clip prend cette cadence. Seul le fait de charger un swf sur le _root fait changer la cadence si celle-ci est différente dans le nouveau fichier swf. [intermédiaire]
Objets et mots AS Dépréciés
Dites à vos clients que les players 7 et inférieurs ont un trou de sécurité considéré comme dangereux. Cela vous permettra de passer tout de suite en Flash 8 et de contribuer au taux de pénétration de son player \^0^/. [tout niveau]
Il est recommandé d'utiliser des clips conteneurs pour charger des fichiers Flash ou jpg, même si Macromedia ne stipule rien au sujet des _level. [débutant]
Bien que Macromedia déprécie certains mots dans le langage ActionScript, savoir les utiliser permet de comprendre pourquoi ne pas les utiliser. [intermédiaire]
Pièges de l'actionscript et de Flash
les clips instanciés sur une profondeur négative, égale à zéro, ou supérieur à 1048575 ne peuvent pas être enlevés à l'aide de la méthode removeMovieClip. Ceci est du au fait que les niveaux inférieur à -16383 et supérieur à 1048575 sont réservés de préférences aux clips instanciés sur la scène ou au curseur de la souris. [débutant]
L'utilisation des nombres formatés en "digital", c'est à dire 01, 02, 03... doivent être utilisés avec attention. S'ils restent de type Number, ils sont en base octale, de ce fait, 08, 09, 080, 081, ..., 090, 091.... n'existent pas. Il est possible de les utiliser à l'aide d'un casting String. (fortiche, Flash \*O*/) [avancé]
La déclaration des fonctions peut se faire de deux façons dans Flash : function leNom () {} et leNom = function () {}. La première syntaxe n'influance pas sur le scope de Flash alors que la deuxième, si; l'utilisation de this à l'intérieur peut s'avérer capricieu (cas extrème, je l'avoue ^^). [avancé]
Les entrées non-numérotées d'un tableau ne sont pas comptabilisées dans la propriétée length de ce tableaux. Ainsi leTableau[ unMot ] ne sera accessible que via une boucle for...in ou ciblé directement en dur. [intermédiaire]
Le contenu d'une variable n'est pas forcément ce qu'elle est : toujours s'assurer que le typage ne change pas en cours de procédure. L'actionscript 2 permet d'éviter ces pièges en renvoyant des erreurs à la compilation. [intermédiaire]
La vitesse d'execution d'un script n'est pas proportionnelle à la longueur des noms de variables. C'est un leurre qui est accentué par les tests effectués dans l'IDE de Flash : effectivement, la longueur des noms augmentent la taille d'un fichier Flash et la compilation peut demander un temps plus long. Mais compilation et exécution sont deux choses distinctes et différentes.
Pour tous tests, il faut nécessairement passer par un navigateur ou un éxécutable pour avoir une meilleure estimation d'exécution d'un projet. [intermédiaire]
Les paramètres de liaison d'export pour un élément de la bibliothèque pour le partage demande une URL de ciblage du fichier swf : ce paramètre ne sert à rien!! Etant donné que le même fichier peut-être utilisé à différents endroits d'un projet (entend depuis différents fichiers fla), il n'est pas logique d'indiquer un fichier cible défini. Pour ma part, je met dummyOutput étant donné que Flash n'accepte pas de laisser ce champ vide. [intermédiaire]
Ressources sur le net
Toutes les ressources gratuites et/ou libre pouvant être trouvées sur le net, y compris ce site, sont sans garantie. Dans cette optique, un texte doit être proposé à l'utilisateur. Et ni'mportunez pas les websmaster des sites pour des broutilles. [tout niveau]