Je corrige actuellement les soumissions de concurrents des Actionscript Awards, menés à Singapour. Une des contraintes étant le nombre de lignes de code (60 lignes max.), des développeurs ont déployé des trésors d'ingéniosité pour économiser des lignes d'instructions ! :) Ce qui complique évidemment la compréhension de ce qu'est sensé faire le code, et ainsi ne simplifie pas mon travail de correcteur ! :P

:!: L'ensemble de ces pratiques n'est évidemment pas à conseiller !!! :!: Etant donné que même si le code fonctionne quand-même, le lisibilité s'en trouve fortement réduite. Je ne les donne ici que par curiosité intellectuelle pour ceux qui voudraient se lancer dans ce type de contest.

Tout d'abord, il n'y a pas suffisamment de personnes qui savent que les commandes createEmptyMovieClip() et duplicateMovieClip() retournent une référence sur le clip crée (ou dupliqué). Il ets donc possible de récupérer cet objet nouvellement créé sur la même ligne. De même, l'argument objetInit peut se révéler trés utile dans cette course aux lignes :var mc = _root.monClipOriginal.duplicateMovieClip("monClone", _root.getNextHighestDepth(), {_x: 100, _y: 200, _alpha:50}); Ensuite, il existe l'éternel instruction ternaire qui remplace quasi-systématiquement le if. Bien évidemment, les if imbriqués deviennent des ? imbriqués ! :=)var myVar = (this._x > 10 ? 10 : 20);
// Equivalent de
var myVar;
if (this._x > 10) {
   myVar = 10;
} else {
   myVar = 20;
}
Penchons-nous maintenant sur l'opérateur d'affectation qu'est '='. En effet, une instrcution d'affectation retourne la valeur qui vient d'être affectée. Ainsi, il est possible d'affecter la même valeur à plusieurs valeurs d'un coup. monClip._xscale = monClip._yscale = 50; :!: Pour info, c'est pour cette raison que lorsqu'on crée un setter dans une classe, son utilisation fait appel au getter correspondant (plus d'infos chez petepx) Si on combine plusieurs astuces, on peut obtenir le code pour créer une ombre par exemple (en supposant que la profondeur en dessous du clip visé est vide)// Si, si, il s'agit d'une seule ligne de code !
(color = new Color(mc = monClip.duplicateMovieClip(monClip._name + "_shadow", monClip.getDepth()-1, {_x : monClip._x + 10, _y: monClip._y + 10, _alpha: 50}))).setRGB(0);
// Le clip d'ombre est dans mc
trace(mc);
Mais le truc qui m'a le plus surpris, parce que je n'y avais pas pensé une seule seconde, c'est l'utilisation de la virgule. En effet, la virgule est souvent utilisée conjointement à l'instruction var pour déclarer plusieurs variables d'un coup... mais l'on peut l'utiliser dans bien d'autres situations : // Utilisation "normale"
var maVar = 10, monAutreVar = 20;
// Utilisation détournée
(mc = _root.createEmptyMovieClip("newclip", 10)), mc._alpha=15;

Futé tout ca non ? ;) Si vous avez d'autres astuces du genre, ca me plairait bien de toutes les collecter, histoire de savoir jusqu'à quel point on peut être tordu à ce niveau la !!! :=)