arthur-debert/BulkLoader

102 - percentWeight returns unreliable results if clearMemory set to true

arthur-debert opened this issue · 1 comments

Not sure if this is a expected behavior. But this is what I found. It
really throw me off for several hours:

What steps will reproduce the problem?
1. This is my commented code:

//remove any previous loaders 
BulkLoader.removeAllLoaders();

//create a new one. Will load files 1 at the time
_mediaLoader = BulkLoader.createUniqueNamedLoader(1);

// add files to load
for (var _i:int =0; _i< _totMedia; _i++)
{ 
  _mediaLoader.add( _mediaArr[_i], {"id":String(_i), preventCache: true });

  // event for individual Item
  _mediaLoader.get(_id).addEventListener(Event.COMPLETE, _onFileLoaded,
false, 0, true);
  // EVENTS FOR THE _mediaLoader as a group
  // dispatched when any item has progress:
  _mediaLoader.addEventListener(BulkLoader.PROGRESS, _onProgressMedia,
false, 0, true);
  // now start the load
  _mediaLoader.start();
}

2.
// listener to measure progress of all loads

private function _onProgressMedia(e:BulkProgressEvent):void
{  
  trace ("PERCENTAJE OF ASSETS LOADED:", e.target.weightPercent,
e.weightPercent,  e.target.itemsLoaded, e.itemsLoaded);
}

3.
// called each time a file is loaded
// IF CLEARCACHE SET TO TRUE, THE weightPercent, itemsLoaded, itemsTotal
values go NUTS.

private function _onFileLoaded(e:Event):void
{
  trace ('file loaded');
  e.target.removeEventListener(Event.COMPLETE, _onFileLoaded);
  var _id:String = e.target.id;
  var _theLoad:\* =  _mediaLoader.getContent(_id, true);
 }

What is the expected output? What do you see instead?

I was expecting to see a progressive report of my load: 0, 5, 8, 12, 22,
35, ..100%. 

That's fine when clearCache is set to false. If set to true instead I get this:
0, 3, 5, 15 (first item loaded),
0, 2, 9, 18, 25 (second item loaded),
0, 11, 19, 30, 33 (third item loaded),
... 
0, 6, 12, 15, 35, .., 80, 90, 100 (last item loaded)
then reports zero two or three times.

This completely screws my loading bar (it keeps jumping back and forth, and
then it disappears!).

Anytime an item finishes loading, the weightPercent report starts from
zero, and finishes at a percentage a little higher (I think this final
percentage is the right value for the accumulate though). 

What version of the product are you using? On what operating system?

FLASH CS4, AS3, OS X 10.5.6, BulkLoader rev 282

Please provide any additional information below.


Original link: http://code.google.com/p/bulk-loader/issues/detail?id=102

debert - 2009-09-10 00:00:00

Hi Hello Little One.

This is the expected behaviour, I am afraid.
Once we clear from memory, BulkLoader simply forgets that asset enterly. This
means that the it also removes it from the aggregates in progress book keeping.

I think this warrants a documentation improvement to make that clear.

One thing to notice it that the usual workflow is to load stuff you need, then, when
the entire loading is done, clear those items. This makes sense since if you are
clearing those items while loading and using them, the memory gain will be minimal.

Cheers
Arthur Debert