pixi-spine
Version:
Spine implementation for pixi v^5
150 lines (93 loc) • 4.38 kB
Markdown
# pixi-spine
Spine 3.8 implementation for PixiJS v5.
Supports both `json` and `skel` formats.
PixiJS v5 Spine 3.8 - this branch, latest npm
PixiJS v5 Spine 3.7 - [pixi5-spine3.7 branch](https://github.com/pixijs/pixi-spine/tree/pixi5-spine3.7) npm `2.0.5`
PixiJS v4 Spine 3.8 - [pixi4-spine3.8 branch](https://github.com/pixijs/pixi-spine/tree/pixi4-spine3.8) , no npm
PixiJS v4 Spine 3.7 - [v4.x branch](https://github.com/pixijs/pixi-spine/tree/v4.x) npm version `1.5.21`
PixiJS v3 Spine 3.8 - [pixi3-spine3.8 branch](https://github.com/pixijs/pixi-spine/tree/pixi3-spine3.8), no npm
Demos:
https://pixijs.io/examples/#/plugin-spine/spineboy-pro.js
https://pixijs.io/examples/#/plugin-projection/runner.js
https://sbfkcel.github.io/pixi-spine-debug/
## Usage
### Prebuilt Files
If you are just including the built files, pixi spine adds itself to a `PIXI` namespace:
```js
new PIXI.spine.Spine();
```
### Basic example
```js
var app = new PIXI.Application();
document.body.appendChild(app.view);
app.loader
.add('spineCharacter', 'spine-data-1/HERO.json')
.load(function (loader, resources) {
var animation = new PIXI.spine.Spine(resources.spineCharacter.spineData);
// add the animation to the scene and render...
app.stage.addChild(animation);
// run
var animation = new PIXI.spine.Spine(spineBoyData);
if (animation.state.hasAnimation('run')) {
// run forever, little boy!
animation.state.setAnimation(0, 'run', true);
// dont run too fast
animation.state.timeScale = 0.1;
}
app.start();
});
```
## Want to go advanced?
Read our [docs](examples/index.md).
## Two-color tint
Light-dark tint is supported with help of [pixi-heaven](https://github.com/gameofbombs/pixi-heaven)
```js
let spine = new PIXI.heaven.Spine(spineData);
```
## Debug
To show bones and bounds you can use [pixi-spine-debug](https://github.com/sbfkcel/pixi-spine-debug). If you want to write your own debug plugin, look at how this one [was created](https://github.com/pixijs/pixi-spine/issues/324)
Demo: https://sbfkcel.github.io/pixi-spine-debug/
## WebPack and Angular
Possible webpack way:
```js
import * as PIXI from "pixi.js';
window.PIXI = PIXI;
import "pixi-spine";
```
Angular:
```ts
import * as PIXI from "pixi.js";
global.PIXI = PIXI;
require("pixi-spine");
```
## Using webpack or browserify?
Our library is tested for integration with webpack and browserify,
check [our travis config](.travis.yml) and [checkpack](http://github.com/cursedcoder/checkpack).
### How to get a wrong result using browserify/webpack
If `resource.spineData` is missing and you consider to use `resource.data` instead, please don't do that and think about middlewares. You probably created `loader` before `pixi-spine` was connected to the project. Consider that you use `app.loader`, here's what to check:
```js
if (app.loader._afterMiddleware.indexOf(PIXI.spine.AtlasParser.use) < 0) {
app.loader.use(PIXI.spine.AtlasParser.use);
console.log('Hey, I managed to initialize loader before pixi-spine module!');
}
```
If you see it in the console, then you should consider using `pixi.js` and `pixi-spine` as external dependencies and not pack them inside the build. Or at least create `loader` in the same module you call `add` and `load` functions.
## Typescript
There's "bin/pixi-spine.d.ts" file, you can use it.
## Spine version
We aim to support the latest stable version of spine.
If you are below Spine 3.5, please please enable "beta updates" and re-export everything from the spine editor.
According to spine runtime license, you can use runtime only if you have bought the editor, so exporting latest versions of animations shouldn't be a problem for you.
## Building
You will need to have [node][node] setup on your machine.
Make sure you have [yarn][yarn] installed:
npm install -g yarn
Then you can install dependencies and build:
```bash
yarn
yarn build
```
That will output the built distributables to `./bin`.
[node]: https://nodejs.org/
[typescript]: https://www.typescriptlang.org/
[yarn]: https://yarnpkg.com