Reference jQuery and SpriteSpin scripts
<script src="https://code.jquery.com/jquery-3.3.1.min.js" type='text/javascript'></script>
<script src='https://unpkg.com/spritespin@x.x.x/release/spritespin.js' type='text/javascript'></script>
Create a container for SpriteSpin
<div id='mySpriteSpin'></div>
Initialize the plugin
<script type='text/javascript'>
$("#mySpriteSpin").spritespin({
// path to the source images.
source: [
"path/to/frame_001.jpg",
"path/to/frame_002.jpg",
"path/to/frame_003.jpg",
"path/to/frame_004.jpg",
"path/to/frame_005.jpg",
"path/to/frame_006.jpg",
"path/to/frame_007.jpg",
"path/to/frame_008.jpg",
"path/to/frame_009.jpg",
"path/to/frame_010.jpg",
],
width : 480, // width in pixels of the window/frame
height : 327, // height in pixels of the window/frame
});
</script>
To remove a SpriteSpin instance you have to destroy it.
// destroy the instance
$("#mySpriteSpin").spritespin("destroy")
// remove any HTML leftovers
$("#mySpriteSpin").html("")
// remove any Style leftovers
$("#mySpriteSpin").attr("style", "")
There are many options that can be used to initialize the plugin. Most of them are optional or have default values.
Name | Type | Description |
---|---|---|
animate | boolean | If true, starts the animation automatically on load |
detectSubsampling | boolean | If true, tries to detect whether the images are downsampled by the browser. |
frame | number | Initial frame number. |
frames | number | Number of frames for a full 360 rotation. |
framesX | number | Number of frames in one row of a single sprite sheet. |
framesY | number | Number of frames in one column of a single sprite sheet. |
frameTime | number | Time in ms between updates. e.g. 40 is exactly 25 FPS |
height | number | The display height in pixels. |
lane | number | The initial sequence number to play. |
lanes | number | Number of sequences. |
loop | boolean | If true, continues playback in a loop. |
orientation | Orientation | number | Preferred axis for user interaction |
plugins | any[] | Array of plugins to load |
preloadCount | number | Number of images to preload. If nothing is set, all images are preloaded. |
renderer | RenderMode | Specifies the rendering mode. |
responsive | boolean | If true, display width can be controlled by CSS. |
retainAnimate | boolean | If true, retains the animation after user iser interaction |
reverse | boolean | If true, animation playback is reversed |
sense | number | Sensitivity factor for user interaction |
senseLane | number | Sensitivity factor for user interaction |
sizeMode | SizeMode | Specifies how the frames are sized and scaled if it does not match the given width and height dimensions. |
source | string | string[] | Image URL or array of urls to be used. |
stopFrame | number | Stops the animation on that frame if `loop` is false. |
target | any | The target element which should hold the spritespin instance. This is usually aready specified by the jQuery selector but can be overridden here. |
touchScrollTimer | [number, number] | Time range in ms when touch scroll will be disabled during interaction with SpriteSpin |
width | number | The display width in pixels. |
wrap | boolean | If true, allows the user to drag the animation beyond the last frame and wrap over to the beginning. |
wrapLane | boolean | If true, allows the user to drag the animation beyond the last sequence and wrap over to the beginning. |
The following callback options may be used to hook into the lifecycle
Name | Type | Description |
---|---|---|
onComplete | Callback | Occurs when spritespin has been loaded and the first draw operation is complente |
onDraw | Callback | Occurs when all update is complete and frame can be drawn |
onFrame | Callback | Occurs when the frame number has been updated (e.g. during animation) |
onFrameChanged | Callback | Occurs when the frame number has changed. |
onInit | Callback | Occurs when the plugin has been initialized, but before loading the source files. |
onLoad | Callback | Occurs when all source files have been loaded and spritespin is ready to update and draw. |
onProgress | Callback | Occurs when any source file has been loaded and the progress has changed. |
You can access the data object that represents the state of the SpriteSpin instance and manipulate it directly.
var data = $("#mySpriteSpin").spritespin({
// initialization options
}).data("spritespin");
The data object contains all the given options properties. Additionaly it also has the following data
Name | Type | Description |
---|---|---|
canvas | JQuery<HTMLCanvasElement> | The inner canvas element |
canvasRatio | number | The pixel ratio of the canvas element |
context | CanvasRenderingContext2D | The 2D context of the canvas element |
frameHeight | number | The detected height of a single frame |
frameWidth | number | The detected width of a single frame |
id | string | The unique spritespin instance identifier |
images | HTMLImageElement[] | Array of all image elements |
loading | boolean | Is true during the preload phase |
metrics | SheetSpec[] | Array with measurement information for each image |
progress | null | PreloadProgress | The current preload progress state |
source | string[] | Array of all image urls |
stage | JQuery | The inner stage element |
state | any | Opaque state object. Plugins may store their information here. |
target | JQuery | The target element |
SpriteSpin offers an API object that allows to register custom functions or use built in functionality.
Here is how you add a custom function
SpriteSpin.extendApi({
myFunction: function(){
console.log('my function simply logs the current frame', this.data.frame);
}
});
This is how you access the api
// initialize the plugin
$("#mySpriteSpin").spritespin({ /* ... options ... */ })
// grab the api object
var api = $("#mySpriteSpin").spritespin("api");
// call your function
api.myFunction();