Hello.
Il est logique que la memoire augmente vu que tu stockes ts les
bitmapdata.
Utilise plutot le cache navigateur. Un peu plus long mais au moins la
mémoire de ton flash n'augmentera pas.
++
Le 1 mars 2010 à 19:13, goabonga <[email protected]> a écrit :
ben je fais exactement ce que tu me dis :) (FP10) :
package app.visitor.display.picture {
import app.model.ModelList;
import app.view.picture.PictureDisplay;
import app.vo.model.PictureVO;
import fimo.model.FModelArray;
import fimo.model.FModelCollector;
import fimo.sys.visitor.IFVisitable;
import fimo.sys.visitor.IFVisitor;
import com.carlcalderon.arthropod.Debug;
import flash.display.Bitmap;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
/**
* @author Goabonga
*/
public class PictureDisplayLoadVisitor implements IFVisitor {
/*
* the current visitor loader
*/
private var _loader : Loader;
/**
* the user picture vo
*/
private var _vo : PictureVO;
/**
* the user picture display
*/
private var _view : PictureDisplay;
public function PictureDisplayLoadVisitor() {
Debug.visitor(this + ' init');
}
public function visit(visitable : IFVisitable) : void {
_view = visitable as PictureDisplay;
if (_view) {
_vo = (FModelCollector.getByUid
(ModelList.PICTURES_MODEL) as
FModelArray).vo as PictureVO;
Debug.visitor(this + ' visit ' + visitable + ' : ' +
_vo.uid);
if(_vo.img == null) {
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener
(Event.COMPLETE,
picture_loaded);
_loader.load(new URLRequest(_vo.link));
} else {
var bmp : Bitmap = new Bitmap(_vo.img);
_view.addChild(bmp);
_view.on_resize();
}
}
}
private function picture_loaded(event : Event) : void {
var data : Bitmap = _loader.content as Bitmap;
_loader.contentLoaderInfo.removeEventListener
(Event.COMPLETE,
picture_loaded);
_vo.img = data.bitmapData.clone();
_loader.unloadAndStop();
data.bitmapData.dispose();
data = null;
_loader = null;
var bmp : Bitmap = new Bitmap(_vo.img);
_view.addChild(bmp);
_view.on_resize();
/*if(int(_vo.uid) < 100) {
(ModelCollector.getByUid(ModelList.PICTURES_MODEL) as
ModelArray).next();
}*/
}
}
}
mon VO :
package app.vo.model
{
import fimo.vo.FVo;
import flash.display.BitmapData;
/**
* @author Goabonga
*/
public class PictureVO extends FVo {
public var title : String ;
public var link : String ;
public var img : BitmapData;
public function PictureVO(obj : Object = null) {
super(obj);
}
override public function destroy() : void {
title = null;
link = null;
if(img) img.dispose();
img = null;
super.destroy();
}
}
}
en gros je n'ai aucune référence à l'objet le seule bug que je
constate c'est quand je dé-commente la ligne (*) , omis le bmp qui e
st
affiché sur ma scène, mais que je remove avant de lancer la méthode
clear de mon modèle.
(*) la ligne qui bug !
/*
if(int(_vo.uid) < 100) {
(ModelCollector.getByUid(ModelList.PICTURES_MODEL) as
ModelArray).next();
}
*/
--
Vous recevez ce message, car vous êtes abonné au groupe Google Group
es FCNG.
Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]
om.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected]
om.
Pour plus d'options, consultez la page de ce groupe :
http://groups.google.com/group/fcng?hl=fr
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes FCNG.
Pour envoyer un message à ce groupe, adressez un e-mail à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
[email protected].
Pour plus d'options, consultez la page de ce groupe :
http://groups.google.com/group/fcng?hl=fr