PhilFlash

Script timeout, ScriptLimit tag, Application Form et ASV

Dans une "grosse" application RIA, je suis tombé sur le message suivant avec la fenêtre d'erreur suivante :

A script in this movie is causing Flash Player to run slowly...

L'application RIA est une "Form Application" composée d'environ 30 écrans.

Ce problème arrivait sur des machines peu puissantes. Ceci n'était pas du à un bug mais au temps de chargement des composants de Flash MX 2004 et d'initialisation des Screen.

Pour régler ce problème, il faut modifier une variable cachée de Flash : la variable script timeout. Malheureusement, Macromedia ne propose aucun outil pour modifier les deux variables cachées : script timeout et recursion limit.

Pour réaliser cette modification, il existe deux techniques :

Technique 1 : Outil gratuit - Free tool : ScriptLimits Injector (Mise à jour - Updated - 11 Mars 2005)

Burak KALAYCI a réalisé un outil gratuit permettant de modifier les deux variables.

Cet outil est ScriptLimits Injector : http://www.buraks.com/swfsli/

Il en parle dans son blog à cette adresse : http://www.asvguy.com/2005/02/free_scriptlimi.html

Pour modifier le timeout à 70 secondes et conserver un backup de votre swf, il suffit de créer un fichier .bat sous Windows contenant la commande suivante :

swfsli myflash.swf /t70 /b /v

La liste complète des commandes.

Technique 2 : Décompilateur ASV

Pour réaliser cette modification, vous pouvez aussi utiliser ASV (Action Script Viewer) le célèbre décompilateur de Burak KALAYCI. Par contre, il y a avait un bug lorsque l'on modifiait cette variable dans une Form Application. Après un échange de mail, Burak a corrigé le bug et a intégré la correction dans la nouvelle version ASV 4.083 daté du 2 février 2005. Merci Burak.

Voici comment réaliser la modification. Vous devez éditer un Flash avec ASV. Puis :

Si le bouton Add a ScriptLimits Tags est désactivé, les variables sont déjà modifiées. Il suffit de cliquer sur la tabulation Special Tags pour visualiser les valeurs :

Voila une utilisation détournée d'un décompilateur.

Si vous avez des problèmes de script timeout du à de long temps de calcul (ou de récursion) dans une Form Application, pensez à consulter la technote de Macromedia et à utiliser soit ScriptLimits Injector, soit la nouvelle version d'ASV pour modifier les valeurs.

xhtml   css   cc   508   aaa
Me connaître  |  Me contacter