Je rencontre des problèmes avec la gestion de la mémoire dans une application flash. L'utilisation de la mémoire se développe un peu, et j'ai suivi la façon dont je charge les actifs.Utilisation de la mémoire dans Flash/Flex/AS3
-je intégrer plusieurs images raster dans une classe intégrée, comme celui-ci
[Embed(source="/home/gabriel/text_hard.jpg")]
public static var ASSET_text_hard_DOT_jpg : Class;
Je puis par exemple les actifs de cette façon
var pClass : Class = Embedded[sResource] as Class;
return new pClass() as Bitmap;
À ce stade, l'utilisation de la mémoire monte, ce qui est tout à fait normal . Cependant, null
toutes les références à l'objet ne libère pas la mémoire. Sur la base de ce comportement, il semble que le lecteur Flash crée une instance de la classe la première fois que je la demande, mais ne la libère jamais - pas sans références, en appelant System.gc(), en faisant le double tour LocalConnection ou en appelant dispose() sur les objets BitmapData.
Bien sûr, ceci est très indésirable - l'utilisation de la mémoire augmenterait jusqu'à ce que tout ce qui est dans les fichiers SWF soit instancié, que j'aie cessé d'utiliser un actif il y a longtemps.
Mon analyse est-elle correcte? Peut-on faire quelque chose pour résoudre ce problème?
Désolé, je ne suis pas tout à fait. Je n'ai décrit qu'une seule façon de le faire. Le premier extrait montre comment j'intègre les actifs et le second comment je les utilise. Voulez-vous dire pourquoi je ne fais pas juste 'new ASSET_text_hard_DOT_jpg()'? C'est parce que mon code est assez complexe et ne sait pas toujours à l'avance qu'il a besoin, par exemple il crée une chaîne de plusieurs morceaux et obtient cette image nommée (ie "text_" + s_lDifficulty [nDifficulty] -> "text_hard") – ggambett
I Je suis désolé mais je pense que la chose que vous essayez de réaliser n'est pas possible. D'après ce que je sais, les ressources sont intégrées lors de la construction du swf, je ne suis pas sûr que vous puissiez incorporer une ressource dynamiquement comme vous l'avez décrit. Ce que je ferais pour créer un dictionnaire et y mettre toutes les ressources dont j'ai besoin. Je l'utiliserais comme dans le code UPDATE1 que j'ai écrit maintenant dans la réponse. –