Centre de Formation Flash - Forums Adobe Flash: Great White + MovieMaterial + Destroy - Centre de Formation Flash - Forums Adobe Flash

Voir le contenu

Page 1 sur 1
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

Great White + MovieMaterial + Destroy memory leak !!

#1 Utilisateur non-connecté   auricom

  • Habitué
  • Groupe : Habitués
  • Messages : 720
  • Inscrit : 19-February 03
  • Location:Montréal, QC, Canada
  • Compétences: Non communiqué.

Posté 07 September 2008 - 01:33 PM

Bonjour

Je voulais savoir si quelqu un avait reussi a detruire pour de bon un movieMaterial

ce qui se passe c est que je cree un plane auquel j associe la texture d un movieclip

une fois mon anim terminee je voudrais supprimer l ensemble

MovieMaterial
Plane
DisplayObject3D

lorsque je regarde mon instance de firefox dans le window task manager, mon firefox est a 120000 et monte a chaque fois que mon anim passe, sans que le destroy ne fasse effet


voici ce que je fais
p3dP1 = plane
m3dM1 = movieMaterial
o3d1 = Displayobject3D


Action Script


p3dP1.removeChildByName("m3dM1");
m3dM1.destroy();
m3dM1 = null

o3d1.removeChildByName("p3dP1");
p3dP1 = null;
scene.removeChild(o3d1);

renderer.renderScene(scene, camera, viewport); // je fais un render au cas ou ca force le destroy mais ca ne change rien


It happens to the best of us.
0

#2 Utilisateur non-connecté   auricom

  • Habitué
  • Groupe : Habitués
  • Messages : 720
  • Inscrit : 19-February 03
  • Location:Montréal, QC, Canada
  • Compétences: Non communiqué.

Posté 07 September 2008 - 09:05 PM

voici une fonction un peu plus complete




Action Script


public function destroyPopup()
{

//je reccupere mes elements a detruire
var _o3d:DisplayObject3D = arO3DLevel[arO3DLevel.length - 1].o3d;
var _plane1:Plane = arO3DLevel[arO3DLevel.length - 1].plane1;
var _plane1Name:String = arO3DLevel[arO3DLevel.length - 1].plane1Name;
var _material1:MovieMaterial = arO3DLevel[arO3DLevel.length - 1].material1;
var _material1Name:String = arO3DLevel[arO3DLevel.length - 1].material1Name;
var _movieclip1:MovieClip = arO3DLevel[arO3DLevel.length - 1].movieclip1;

// a ce moment je ne sais pas si j ai 2 planes dans mon DisplayObject3D

var _plane2Name:String = arO3DLevel[arO3DLevel.length - 1].plane2Name;

// ici je commence a eliminer mon premier plane

_plane1.material.destroy();
_material1 = null;
_o3d.removeChild(_plane1);

var _movieclip2:MovieClip;


if (_plane2Name != "")
{
// ici j ai bien un deuxieme plane je reccupere les elements dont j ai besoin

var _plane2:Plane = arO3DLevel[arO3DLevel.length - 1].plane2;
var _material2:MovieMaterial = arO3DLevel[arO3DLevel.length - 1].material2;
var _material2Name:String = arO3DLevel[arO3DLevel.length - 1].material2Name;
_movieclip2 = arO3DLevel[arO3DLevel.length - 1].movieclip2;
// ici je supprime mes elements du deuxieme plane

_plane2.material.destroy();
_material2 = null;
_o3d.removeChild(_plane2);
}

// je supprime le displayObject3D de ma scene

scene.removeChild(_o3d);
_o3d = null;

// un petit rendu pour la forme

renderer.renderScene(scene, camera, viewport);


// ici je retire mes movieclip qui ont servit a construire mes planes, et surlesquelles j avais des actions

var mcToRemove1 = _viewStage.getChildByName(_movieclip1.name) as MovieClip;
if (mcToRemove1 != null)
{
_viewStage.removeChild(mcToRemove1)as MovieClip;
}

if (_plane2Name != "")
{
var mcToRemove2 = _viewStage.getChildByName(_movieclip2.name) as MovieClip;
if (mcToRemove2 != null)
{
_viewStage.removeChild(mcToRemove2)as MovieClip;
}
}


arO3DLevel.pop();




It happens to the best of us.
0

Page 1 sur 1
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

1 utilisateur(s) dans ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)