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 est
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 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