Mise en cache des objets d’affichageFlash Player 9 et ultérieur, Adobe AIR 1.0 et ultérieur Que vous créiez une application ou des animations scriptées complexes, vous devez considérer la performance et l’optimisation, à mesure que la taille de vos conceptions Flash augmente. Lorsque votre contenu demeure statique (par exemple une occurrence de Shape rectangulaire), Flash et AIR ne l’optimisent pas. Par conséquent, lorsque vous modifiez la position du rectangle, Flash Player ou AIR redessine la totalité de l’occurrence de Shape. Vous pouvez mettre en cache des objets d’affichage spécifiques pour améliorer les performances de votre fichier SWF. L’objet d’affichage est essentiellement une surface, c’est-à-dire une version bitmap des données vectorielles de l’occurrence, données non destinées à être considérablement modifiées tout au long de la vie de votre fichier SWF. Ainsi, les occurrences pour lesquelles la mise en cache est activée ne sont pas continuellement redessinées pendant la lecture du fichier SWF, et le rendu de ce dernier est plus rapide. Remarque : vous pouvez mettre à jour les données vectorielles au moment de la recréation de la surface. Ainsi, les données vectorielles mises en cache dans la surface ne doivent pas nécessairement être les mêmes pour l’ensemble du fichier SWF.
Pour qu’un objet d’affichage mette en cache sa représentation sous forme de bitmap, il suffit d’activer sa propriété cacheAsBitmap (true). Flash Player ou AIR crée un objet de surface pour l’occurrence, correspondant à une image bitmap mise en cache et non à des données vectorielles. Si vous modifiez les limites de l’objet d’affichage, la surface est recréée et non redimensionnée. Les surfaces peuvent s’imbriquer dans d’autres surfaces. La surface copiera l’image bitmap sur sa surface parent. Pour plus d’informations, voir Activation de la mise en cache sous forme de bitmap. Les propriétés opaqueBackground et scrollRect de la classe DisplayObject sont liées à la mise en cache sous forme de bitmap par le biais de la propriété cacheAsBitmap. Bien que ces trois propriétés soient indépendantes l’une de l’autre, opaqueBackground et scrollRect ne sont utiles que lorsqu’un objet est mis en cache sous forme de bitmap. Les avantages des propriétés opaqueBackground et scrollRect en termes de performances ne sont visibles que si cacheAsBitmap est définie sur true. Pour plus d’informations sur le défilement du contenu des objets d’affichage, voir Défilement horizontal ou vertical des objets d’affichage. Pour plus d’informations sur la définition d’un arrière-plan opaque, voir Définition d’un arrière-plan opaque. Pour plus d’informations sur le masquage du canal alpha, qui demande que vous définissiez la propriété cacheAsBitmap sur true, voir Masquage des objets d’affichage. Quand activer la mise en cacheL’activation de la mise en cache d’un objet d’affichage crée une surface dont les avantages sont multiples, par exemple pour accélérer le rendu des animations vectorielles complexes. Lorsque vous souhaitez activer la mise en cache, plusieurs scénarios sont disponibles. Il pourrait sembler avantageux de toujours activer la mise en cache pour améliorer les performances de votre fichier SWF. Cependant, dans certains cas, cette opération n’a aucun effet bénéfique et risque même parfois de ralentir le fichier. Cette section présente des cas où la mise en cache s’avère bénéfique, et d’autres où il est préférable d’utiliser les objets de façon normale. Les performances générales des données mises en cache dépendent de la complexité des données vectorielles de vos occurrences, de la quantité de modifications et de la définition, ou non, de la propriété opaqueBackground. Si vous modifiez de petites zones, la différence entre l’utilisation d’une surface et celle de données vectorielles sera négligeable. Vous pouvez dans ce cas tester les deux scénarios avant de déployer votre application. Quand utiliser la mise en cache sous forme de bitmapCe qui suit est une série de scénarios dans lesquels vous pouvez voir les bénéfices significatifs qui résultent de la mise en cache sous forme de bitmap.
Activer la mise en cache sous forme de bitmap dans tous ces scénarios améliore la réactivité et l’interactivité de l’application en optimisant les graphiques vectoriels. Par ailleurs, lorsque vous appliquez un filtre à un objet d’affichage, cacheAsBitmap est automatiquement définie sur true, même si vous l’avez explicitement définie sur false. Si vous supprimez tous les filtres appliqués à l’objet d’affichage, la propriété cacheAsBitmap retrouve la valeur précédemment définie. Quand éviter d’utiliser la mise en cache sous forme de bitmapL’utilisation à mauvais escient de cette fonction risque d’affecter les performances du fichier SWF. Avant d’utiliser la mise en cache sous forme de bitmap, tenez compte des considérations suivantes :
Activation de la mise en cache sous forme de bitmapPour activer la mise en cache d’un objet d’affichage sous forme de bitmap, définissez sa propriété cacheAsBitmap sur true : mySprite.cacheAsBitmap = true; Après avoir défini la propriété cacheAsBitmap sur true, vous remarquerez que l’objet d’affichage accroche automatiquement les pixels sur les coordonnées entières. Lorsque vous testez le fichier SWF, vous devriez remarquer que le rendu d’une animation associée à une image vectorielle complexe est bien plus rapide. Une surface (bitmap en cache) n’est pas créée même quand cacheAsBitmap est défini sur true s’il se produit l’un ou l’autre des événements suivants :
Matrices de transformation des images bitmap mises en cacheDans les applications AIR pour périphériques mobiles, vous devriez définir la propriété cacheAsBitmapMatrix à chaque fois que vous définissez la propriété cacheAsBitmap. Définir cette propriété permet d’appliquer un large éventail de transformations à l’objet d’affichage sans déclencher un nouveau rendu. mySprite.cacheAsBitmap = true; mySprite.cacheAsBitmapMatrix = new Matrix(); Lorsque vous définissez cette propriété, vous pouvez appliquer la transformation complémentaire suivante à l’objet d’affichage sans mettre à nouveau l’objet en cache :
Ces transformations sont appliquées directement à l’image bitmap mise en cache. |
|