2013-07-27 1 views
0

Je travaille sur un jeu mobile utilisant Flash CS6 avec AIR. concevoir et coder sur la même plate-forme (sans utiliser de starling, etc.).Conversion de MovieClip en Bitmap avec Dispose()

Je convertis des MovieClips (statiques, non animés) en bitmap de façon dynamique et fonctionne correctement. Mais je réalise avec ce processus la mise en cache bitmapData sur la mémoire et avec de grandes formes il faut beaucoup de mémoire. Ensuite, je décide d'après ajouté à la scène effacer à bitmapData par disposer(). Mais il se retire de la scène et partout où il est montré.

Mon code;

var target:MovieClip = new Ex_mc2(); 
target.x=100; 
target.y=300; 
addChild(target); 

var bounds:Rectangle = target.getBounds(this); 
var bmpData:BitmapData = new BitmapData(Math.floor(bounds.width), Math.floor(bounds.height), true, 0); 
var bmpMatrix:Matrix = target.transform.matrix; 
bmpMatrix.translate(-bounds.x, -bounds.y); // Draw bitmap 
bmpData.draw(target, bmpMatrix); 

var bmp:Bitmap = new Bitmap(bmpData); 
bmp.x=100; 
bmp.y=300; 
addChild(bmp); 

removeChild(target); 
//bmpData.dispose(); I want to use this and i dont want my bmp disappear 

Recherche d'une solution pour une semaine mais je n'arrive pas à comprendre. Donc ma question est; Puis-je convertir movieClips en bitmap avec libération en mémoire?

Comme l'ajout d'un fichier png statique?

Répondre

0

BitmapData - est réellement ce qui est montré sur l'écran. Le format est presque identique à BMP, mais l'ordre des octets est inversé. Bitmap est uniquement un conteneur d'affichage, servant à afficher le contenu de l'image sur l'écran et à fournir des API DisplayObject communes. Donc, si vous utilisez BitmapData.dispose(), vous libérez réellement la mémoire occupée par l'image et évidemment il n'y a rien à afficher par le conteneur Bitmap.

+0

Merci, donc si je comprends bien, il n'y a pas de différence en ajoutant une étape sur PNG statique ou en convertissant movieclip en utilisant bitmapData? Et je dois faire face à l'utilisation de la mémoire? – mtilhan

+0

Correct. Dans les deux cas, vous aurez un objet 'BitmapData' représentant des données d'image. –

+0

merci pour l'explication. J'ai perdu toute ma semaine – mtilhan