¶ manager/layoutMethods for setting the canvas layout and stitching the sprites together (i.e. placing them on the canvas)
|
define([
"wrap/jquery",
"layout/compact",
"layout/vertical",
"layout/horizontal"
],
function ($, CompactLayout, VerticalLayout, HorizontalLayout) {
"use strict";
|
|
Canvas layout managers |
var managers = {
compact: CompactLayout,
vertical: VerticalLayout,
horizontal: HorizontalLayout
};
|
|
Module definition |
return {
|
set: function (type) {
var Manager = managers[type] || managers.compact;
this.manager = new Manager();
},
|
|
¶ @getDimensionsGet the dimensions necessary to place the sprites Params
sprites
array
A list of sprites to place
defaults
object
Default dimensions if no sprites
Returns
object
|
getDimensions: function (sprites, defaults) {
return this.manager.getDimensions(sprites, defaults);
},
|
¶ @placeSpritesPosition a list of sprites to fit in dimensions and layout Params
sprites
array
To place
placed
array
Already placed
dimensions
object
Working width and height
progress
function
Function to update display on progress
|
placeSprites: function (sprites, placed, dimensions, progress) {
var self = this;
progress(0, "info");
$.map(sprites, function (sprite) {
if (!sprite.placed) {
sprite.placed = self.manager.placeSprite(sprite, placed, dimensions);
}
progress(placed.length / sprites.length);
});
sprites = $.map(sprites, function (sprite) {
return sprite.placed ? null : sprite;
});
},
|
¶ @trimTrim dimensions to only contain placed sprites Params
sprites
array
A list of sprites
dimensions
object
Working width and height
|
trim: function (sprites, dimensions) {
var w = 0;
var h = 0;
$.map(sprites, function (sprite) {
w = w > sprite.x + sprite.width ? w : sprite.x + sprite.width;
h = h > sprite.y + sprite.height ? h : sprite.y + sprite.height;
});
dimensions.width = w || dimensions.width;
dimensions.height = h || dimensions.height;
},
|
¶ @getSpritesheetReturns an image using the browser canvas element's drawing context. Triggers a non-fatal error if anything fails Params
options.sprites
array
A list of sprites
Returns
string
|
getSpritesheet: function (options) {
var sprites = options.sprites;
var dimensions = options.dimensions;
var canvas;
var context;
var spritesheet;
canvas = document.createElement("canvas");
canvas.width = dimensions.width;
canvas.height = dimensions.height;
try {
context = canvas.getContext("2d");
$.map(sprites, function (sprite) {
var x = sprite.left();
var y = sprite.top();
context.drawImage(sprite.image, x, y);
});
spritesheet = canvas.toDataURL("image/png");
} catch (e) {
this.$element.trigger("error", [e]);
}
return spritesheet;
}
};
});
|