rn-sprite-sheet
A sprite sheet animation library for React Native
Install
npm install --save rn-sprite-sheet
Import
import SpriteSheet from 'rn-sprite-sheet';
Usage
- Create ref for SpriteSheet
- Set the source (must be required; { uri } will not work)
- Specify the columns and rows (each frame must be the same size)
- Create animations object (each key is an animation name and their value should be an array of frame indexes)
- Play an animation by calling the play method on a SpriteSheet reference and pass it a config object with at least a type property
Example
<SpriteSheet ref={ref => (this.mummy = ref)} source={require('./assets/mummy.png')} columns={9} rows={6} // height={200} // set either, none, but not both // width={200} imageStyle={{ marginTop: -1 }} animations={{ walk: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], appear: Array.from({ length: 15 }, (v, i) => i + 18), die: Array.from({ length: 21 }, (v, i) => i + 33) }} />; // ... play = config => this.mummy.play(config);
Methods
To be called on a SpriteSheet reference
play({ type, // (required) name of the animation (name is specified as a key in the animation prop) fps = 24, // frames per second loop = false, // if true, replays animation after it finishes resetAfterFinish = false, // if true, the animation will reset back to the first frame when finished; else will remain on the last frame when finished onFinish = () => {} // called when the animation finishes; will not work when loop === true }) stop(callback)
Props
static propTypes = { source: PropTypes.number.isRequired, // source must be required; { uri } will not work columns: PropTypes.number.isRequired, rows: PropTypes.number.isRequired, animations: PropTypes.object.isRequired, // see example viewStyle: stylePropType, // styles for the sprite sheet container imageStyle: stylePropType, // styles for the sprite sheet height: PropTypes.number, // set either height, width, or none, width: PropTypes.number, // but not both height and width onLoad: PropTypes.func }; static defaultPropTypes = { columns: 1, rows: 1, animations: {} };