spritemaker
Version:
Make image sprites quickly and easily
108 lines (84 loc) • 4.34 kB
Markdown
This package helps you create pixel art image sprites.
Install: `npm install --save spritemaker`
Require: `const spritemaker = require("spritemaker")`
Use: `makeSprite({ sprite, name, interval, pixelSize, parentId }).start()`
First, you must create a representation of your sprite as array of image frames.
Each image frame is an array of rows, each cell is a hex color code.
The example below is a 3x3 image that alternates between black and white.
```javascript
// template of 2 image, 3 x 3 sprite
const mySprite =
[ // images
[ // image
[
[
[
],
[ // image
[
[
[
],
]
```
Image frames can be any dimension but all image frames within a sprite must have the same dimensions.
There is no limit on number of frames.
```javascript
makeSprite({
sprite, // required 3d array, the array representation of your sprite (see above)
pixelSize, // optional number, the height and width of each pixel in px, defaults to 1
interval, // optional number, milliseconds between frames
parentId, // optional string, id of desired parent element of sprite
name, // optional string, class name of sprite
})
// returns
{
sprite, // DOM node of sprite
start, // function to start sprite
stop, // function to stop sprite
}
```

```javascript
const winkingFace = [
[
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#050505", "#050505", "#050505", "#050505", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
],
[
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200", "#050505", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#050505", "#050505", "#050505", "#050505", "#050505", "#050505", "#FFF200", "#FFF200"],
["#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200", "#FFF200"],
],
]
const winkingSprite = makeSprite({
sprite: winkingFace,
name: "winking-face",
interval: 500,
pixelSize: 20,
parentId: "container", // sprite gets attached to existing div with id="container"
})
winkingSprite.start() // starts sprite animation
winkingSprite.stop() // stops sprite animation
```