Bonjour
Je travaille sur une application dans laquelle on charge un certain nombre d'images (jusqu'à 200) qu'on affiche à l'écran et l'utilisateur peut passer de l'une à l'autre en scrollant, drag'n'droppant, etc...
Comme charger 200 images de bonne qualité prend énormément de ressources, chaque image est stockée sur un serveur distant dans 2 qualités différentes que j'appellerai imageLQ et imageHQ.
Je charge d'abord toutes les imageLQ de qualité moyenne. Elles sont sauvegardées dans des variables Bitmap et donc utilisables à tout moment. Lorsque l'utilisateur s'arrête sur une image en particulier (l'image 35 par exemple donc l'image imageLQ35 est utilisée), je lance le chargement de sa bonne qualité: imageHQ35.
Lorsque imageHQ35 est chargée, je remplace la source de mon image (imageLQ35) par la nouvelle source (imageHQ35).
Mon problème se situe à ce changement de source.
J'ai d'un côté mon composant Image:
de l'autre mon bitmap imageLQ35 loadé de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <mx:Image id="image" />
Pour "placer" ce bitmap dans mon composant Image, je change sa source de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imageNotLoaded); var urlRequest:URLRequest = new URLRequest('http://yuukuari.free.fr/Flex/Image1.png'); loader.load(urlRequest); function imageLoaded(event:Event):void { var mySmoothImage:Bitmap = new Bitmap(); mySmoothImage = event.target.content; mySmoothImage.smoothing = true; this.imageLQ35 = mySmoothImage; }
L'image s'affiche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.image.source = this.imageLQ35
Lorsque l'utilisateur s'arrête sur cette imageLQ35, je lance le chargement de la même façon que l'image LQ (avec un loader, etc...) et lorsqu'elle est chargée, je fais:
A cet instant-là, le bitmap utilisé comme ancienne source de mon composant Image (donc ici imageLQ35) est supprimé, ou plutôt "vidé". Le Bitmap existe toujours mais sa "BitmapData" est elle "null"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.image.source = this.imageHQ35
Du coup si je veux revenir à l'ancienne image, imageLQ35, je ne peux pas à moins de la recharger.
J'aimerais que ce changement de source ne supprime pas l'ancienne source d'image :/ j'ai contourné le problème en faisant une copie temporaire du bitmap avant de le changer:
Mais bon .. ce serait mieux de régler le problème!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var tempBitmap:Bitmap = this.imageLQ35; //Je copie this.imageLQ35 this.image.source = imageHQ35; //this.imageLQ35 est "vidée" this.imageLQ35 = tempBitmap; //Je "rempli" this.imageLQ35
Merci de votre aide
Yuukuari
Partager