Thnx for the links... tried some, but still with no success... I now have the
following:
public class Image extends MovieClip
{
private var _thumbLoader:Loader;
private var _largeLoader:Loader;
private var _thumb:Bitmap;
private var _large:Bitmap;
public function loadThumb() :void
{
_thumbLoader = new Loader();
_thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
thumbLoaded, false, 0, true);
_thumbLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
errorOccured, false, 0, true);
_thumbLoader.load(new URLRequest(_tu));
}
private function thumbLoaded( e :Event ) :void
{
_thumb = Bitmap(e.currentTarget.content);
_thumb.smoothing = true;
addChild(_thumb);
_thumbLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
thumbLoaded);
_thumbLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,
errorOccured);
_thumbLoader = null;
dispatchEvent(new Event(Image.IMG_LOADED));
}
public function loadLarge() :void
{
_largeLoader = new Loader();
_largeLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
largeLoaded, false, 0, true);
_largeLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
errorOccured, false, 0, true);
_largeLoader.load(new URLRequest(_lu));
}
private function largeLoaded( e :Event ) :void
{
_large = e.currentTarget.content;
_large.smoothing = true;
addChild(_large);
_largeLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
largeLoaded);
_largeLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,
errorOccured);
//_largeLoader.content.dispose();
_largeLoader = null;
dispatchEvent(new Event(Image.IMG_LOADED));
}
public function disposeLarge() :void
{
if (_large)
{
removeChild(_large);
_large.bitmapData.dispose();
_large = null;
}
}
public function dispose() :void
{
disposeLarge();
removeChild(_thumb);
_thumb.bitmapData.dispose();
_thumb = null
}
}
Anyone some tips? The large bitmap stays in memory...
-----Original Message-----
From: flashcoders-boun...@chattyfig.figleaf.com
[mailto:flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Glen Pike
Sent: Wednesday, 21 January 2009 21:18
To: Flash Coders List
Subject: Re: [Flashcoders] Garbage Collection difficulty
Hi,
I think if you use it locally, you still have to "dispose" of it:
http://www.bartclaessens.com/tag/memory-management/
http://labs.bigspaceship.com/2007/02/28/flash-performance-tips-part-ii/
http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html
Search for "dispose" in some of these - also, one of the comments in
Grant's article mentions testing in the IDE vs testing in the browser
gives different results for loaded images.
HTH
Glen
Sander Schuurman wrote:
> That's a local variable right? Doesn't it happen automatic?
> I must concentrate on the _large Sprite, isn't it?
>
>
> -----Original Message-----
> From: flashcoders-boun...@chattyfig.figleaf.com
> [mailto:flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Glen Pike
> Sent: Wednesday, 21 January 2009 12:20
> To: Flash Coders List
> Subject: Re: [Flashcoders] Garbage Collection difficulty
>
> Hi,
>
> Do you have to destroy the Bitmap you create in the largeLoaded
> function???
>
> Glen
>
> Sander Schuurman wrote:
>
>> Hi cool list,
>>
>> I'm struggling with my Image class. It's supposed to load and unload
>> different sized images dynamicly; but I can't seem to get it to work
>> properly. The loading works fine, but the unloading not for the full 100%.
>> It visually unloads the image, but it remains in the memory. I have tried
>> several different things; I'm a bit stuck now.
>>
>> Here is a stripped class:
>>
>> public class Image extends MovieClip
>> {
>> ...
>> private var _largeLoader:Loader;
>> private var _large:Sprite;
>> ...
>> public function Image( thumbUrl :String,
>> normalUrl :String,
>> largeUrl :String )
>> {
>> _tu = thumbUrl;
>> _nu = normalUrl;
>> _lu = largeUrl;
>> }
>> ...
>> public function loadLarge() :void
>> {
>> _largeLoader = new Loader();
>>
>> _largeLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, largeLoaded,
>> false, 0, true);
>>
>> _largeLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,
>> errorOccured, false, 0, true);
>> _largeLoader.load(new URLRequest(_lu));
>> }
>>
>> private function largeLoaded( e :Event ) :void
>> {
>> var b:Bitmap = Bitmap(largeLoader.content);
>>
>>
>> _largeLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
>> largeLoaded);
>>
>> _largeLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,
>> errorOccured);
>> _largeLoader = null;
>>
>> _large = new Sprite();
>> _large.addChild(b);
>> addChild(_large);
>>
>> dispatchEvent(new Event(Image.IMG_LOADED));
>> }
>> ...
>> public function clear( full :Boolean = false ) :void
>> {
>> // clear normal img and large img
>> ... ?
>>
>> // tried things like:
>>
>> //_normal.removeChildAt(0);
>> //_normal = null;
>> //removeChild(_normal);
>> //_large.removeChildAt(0);
>> //_large = null;
>> //removeChild(_large);
>> //delete(_normal.removeChildAt(0));
>> //delete(_large.removeChildAt(0));
>>
>> // removes the images visually, but they won't get
>> GC'ed
>>
>> if (full)
>> {
>> // clear thumb and itself
>> }
>> }
>> }
>>
>> Thanks in advance!
>> _______________________________________________
>> Flashcoders mailing list
>> Flashcoders@chattyfig.figleaf.com
>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>
>>
>>
>>
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
>
>
--
Glen Pike
01326 218440
www.glenpike.co.uk <http://www.glenpike.co.uk>
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders