diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index fcd52d5..9597f2e 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -34,17 +34,11 @@ var frameKeys = Object.keys(frames); var batchIndex = 0; - function shouldProcessNextBatch() + function processFrames(initialFrameIndex, maxFrames) { - return batchIndex * BATCH_SIZE < frameKeys.length; - } - - function processNextBatch(done) - { - var initialFrameIndex = batchIndex * BATCH_SIZE; var frameIndex = initialFrameIndex; - while (frameIndex - initialFrameIndex < BATCH_SIZE && frameIndex < frameKeys.length) + while (frameIndex - initialFrameIndex < maxFrames && frameIndex < frameKeys.length) { var frame = frames[frameKeys[frameIndex]]; var rect = frame.frame; @@ -94,11 +88,29 @@ } frameIndex++; } + } + + function shouldProcessNextBatch() + { + return batchIndex * BATCH_SIZE < frameKeys.length; + } + + function processNextBatch(done) + { + processFrames(batchIndex * BATCH_SIZE, BATCH_SIZE); batchIndex++; setTimeout(done, 0); } - async.whilst(shouldProcessNextBatch, processNextBatch, next); + if (frameKeys.length <= BATCH_SIZE) + { + processFrames(0, BATCH_SIZE); + next(); + } + else + { + async.whilst(shouldProcessNextBatch, processNextBatch, next); + } }); }; };