:: Catégories

  • actionscript 3
  • Air
  • Flash
  • Flex
  • molehill
  • Non classé
  • papervision
  • Web

:: Derniers articles.

  • Nouveau Android Flash Game : Kick The Ducks !
  • Démo – Client FTP en Flex
  • Démo Molehill – particules
  • [TUTO] AS3 + APPARAT / TDSI, accélérez vos projets !
  • [FIXED] SecurityError: fileWriteResource
  • [Tutorial] Techniques d’optimisations en AS3
  • [Tutorial] Un client FTP en AS3 sous RoboLegs + SwfStudio – partie 2
  • [Tutorial] Un client FTP en AS3 sous RoboLegs + SwfStudio – partie 1

:: Tags

  • 3d actionscript3 ACTUce android as3 client code demo ducks Flash Flex flexunit framework ftp game jeux kick molehill optimisations particules robotlegs swfStudio tests unitaires the

:: Sites Exoa

  • Home
  • actionscript 3
  • Air
  • Flash
  • Flex
  • molehill
  • Non classé
  • papervision
  • Web

exoa labs

[Tutorial] Techniques d’optimisations en AS3

Aucun commentaire - mai 21st, 2010 - Flash, actionscript 3

Voici un résumé de quelques techniques pour optimiser votre code actionscript3. Les gains de performances sont réels et peuvent facilement être constatés sur les gros projets.

1. Autant que possible, ne pas utiliser d'objets dynamiques comme les MovieClip, Object, et autres qui sont beaucoup plus long à parser pour Flash. Si vous utilisez des MovieClip provenant de la librairie, et n'utilisant pas leur timeline, utilisez une fonction qui récupère leur childs et les place dans un nouveau Sprite par exemple.
En ce qui concerne les objets, préférez un type le plus strict possible :

Déconseillé :

  1. for (var i:int=0;i<n;i++)
  2. {
  3. var v: Object = new Object;
  4. v.x = 1;
  5. v.y = 2;
  6. v.z = 3;
  7. }

Conseillé:

  1.  
  2. class Vector3D
  3. {
  4. public var x: Number;
  5. public var y: Number;
  6. public var z: Number;
  7. }
  8. for (;i<n;i++)
  9. {
  10. var v: Vector3D = new Vector3D;
  11. v.x = 1;
  12. v.y = 2;
  13. v.z = 3;
  14. }
  15.  

De la même manière, si le type de contenu à stocker est toujours le même, ne pas utiliser Array, mais Vector.<type>()
Cette technique est 10 fois plus rapide.

Déconseillé :

  1. var sum:Number = 0;
  2. var len:int = array.length;
  3. for(var i:int = 0; i < len; i++)
  4. {
  5. sum += array[i];
  6. };
  7.  

Conseillé :

  1. var sum:Number = 0;
  2. var len:int = vector.length;
  3. for(var i:int = 0; i < len; i++)
  4. {
  5. sum += vector[i];
  6. };

2. Toujours typer vos objets, même dans les boucles, ainsi le player n'aura pas à chercher quel est le type de contenu avant de l'utiliser :
Déconseillé :

  1. for (;i<n;i++)
  2. array[i].x = 2;

Conseillé :

  1. for (;i<n;i++)
  2. Vector3D(array[i]).x = 2;

3. Réutiliser les instances de classes plutôt que d'en créer de nouvelles. Cette optimisation permet de donner d'une part moins de travail au garbage collector mais également d'économiser beaucoup de temps perdu en créer ces instances. Cette technique est 300 fois plus rapide.

Déconseillé :

  1. for (;i<n;i++)
  2. p = new Point(i, i);

Conseillé :

  1. for (;i<n;i++)
  2. {
  3. p.x = i;
  4. p.y = i;
  5. }

4. Ne pas utiliser de try catch autant que possible. Les calculs qui sont générés à l'intérieur sont très gourmands. Cette technique est 3000 fois plus rapide
Déconseillé :

  1. var o: Sprite;
  2. for (;i<n;i++)
  3. {
  4. try
  5. {
  6. o.blendMode = BlendMode.ADD;
  7. }
  8. catch ( error: Error ) {}
  9. }
  10.  

Conseillé :

  1. var o: Sprite;
  2. for (;i<n;i++)
  3. if ( o != null )
  4. o.blendMode = BlendMode.ADD;

La suite au prochain post ! ;)


    Commenter




      WORKS

    • Travaux

      PRODUCTS

    • ZenBook
    • E-ZEN Galery
    • FlashConf
    • EXOA MP3-Player

      SERVICES

    • Application Facebook
    • Advergame
    • Site Web
    • Référencement
    • Hébergement
    • Graphisme
    • Bannières & Animations
    • Application Flash

      EXOA

    • Contact
    • A propos
    • CGV
    • Mentions Légales

    © 2012 exoa labs, SIRET :517 668 349 00015 · Tél : 06.25.59.18.68 · contact@exoa.fr