Adobe a annoncé la disponibilité du Flash Player 10.1 sur les mobiles Android en Juin dernier. Les chanceux munis d’un smartphone Android ont juste à se rendre sur l’Android Marketplace pour installer Flash et accéder à tout le web par le navigateur.
Dernièrement, le runtime Adobe AIR 2.5 est aussi disponible sur Android. Il permet de transformer des applications Flash en applications natives Android. Cette technique de packaging est aussi possible sur l’iPhone ou l’iPad, grâce à l’iPhone packager disponible sur labs.adobe.com, et réautorisé dernièrement par Apple. Enfin, BlackBerry, HP (Palm) et Microsoft ont aussi annoncé l’arrivée de Flash sur leurs mobiles et tablettes. C’est une grande nouvelle pour les 3 millions de développeurs de la Flash Platform, qu’ils soient développeurs Flash ActionScript 3 ou Flex. Mais je dois les mettre en garde. Les développeurs de la Flash Platform sont habitués à exécuter leurs réalisations sur Windows , MAC et Linux, sur des environnements avec des processeurs rapides et une quantité de mémoire importante. Pour que leurs applications Flash s’exécutent correctement sur mobiles, il faut tenir compte de quelques règles de base d’optimisation. Cet article présente comment optimiser son code ActionScript 3 pour environnements mobiles, mais c’est aussi valable pour les desktop bien sûr. Vous pouvez retrouver tous les exemples utilisés dans le guide en ligne « OPtimizing performance for the Flash Platform». Pour comprendre comment améliorer les performances d’une application, il est essentiel de comprendre comment le moteur d’exécution de la plate-forme Flash exécute le code. Le moteur d’exécution fonctionne en boucle, certaines actions se produisant sur chaque « image ». On entend ici par image un simple bloc de temps déterminé par la cadence définie pour l’application. Le temps alloué à chaque image correspond directement à la cadence. Si vous spécifiez une cadence de 30 images par seconde, par exemple, le moteur d’exécution s’efforce de faire durer chaque image un trentième de seconde. Chaque boucle d’image comprend deux phases, divisées en trois parties : les événements, l’événement enterFrame et le rendu. Si les opérations combinées de la boucle d’image (exécution du code et rendu) durent trop longtemps, le moteur d’exécution ne peut pas assurer une cadence uniforme. L’image s’étend au-delà du temps qui lui est alloué, retardant ainsi le déclenchement de l’image suivante. Et c’est souvent le rendu, plus que le calcul pur, qui dans 90% des cas ralentit une application Flash. Conséquence, on perçoit des animations saccadées, des vidéos qui ne sont pas fluides, une fenêtre qui scintille, un décalage entre le moment où l’on saisit le texte et quand il s’affiche, etc. Dès que l’on rencontre ces écueils, il faut cibler la bonne optimisation.
Michaël Chaize
Thibault Imbert